js定义函数对象有几种方式?

JavaScript015

js定义函数对象有几种方式?,第1张

在JavaScript中定义对象可以采用以下几种方式:

1.基于已有对象扩充其属性和方法

2.工厂方式

3.构造函数方式

4.原型(“prototype”)方式

5.动态原型方式 -- 1.基于已有对象扩充其属性和方法

object.name = "zhangsan"

object.sayName = function(name)

{

       this.name = name

       alert(this.name)

}

object.sayName("lisi") -- 2.工厂方式 

function createObject() 

{

       var object = new Object()

       object.username = "zhangsan"

       object.password = "123"

       object.get = function()

       {

              alert(this.username + ", " + this.password)

       }

       return object

}

var object1 = createObject()

var object2 = createObject()

object1.get()

 -- 采用带参数的构造方法:

function createObject(username, password)

{

       var object = new Object()

       object.username = username

       object.password = password

       object.get = function()

       {

              alert(this.username + ", " + this.password)

       }

       return object

}

var object1 = createObject("zhangsan", "123")

object1.get()

JS函数的定义方式比较灵活,它不同于其他的语言,每个函数都是作为一个对象被维护和运行的。

先看几种常用的定义方式:

function func1([参数]){

/*函数体*/

}

var func2=function([参数]){

/*函数体*/

}

var func3=function func4([参数]){

/*函数体*/

}

var func5=new Function()

上述第一种方式是最常用的方式,不用多说。

第二种是将一匿名函数赋给一个变量,调用方法:func2([函数])

第三种是将func4赋给变量func3,调用方法:func3([函数])或func4([函数])

第四种是声明func5为一个对象。

再看看它们的区别:

function func(){

//函数体

}

//等价于

var func=function(){

//函数体

}

但同样是定义函数,在用法上有一定的区别。

<script>

//这样是正确的

func(1)

function func(a)

{

alert(a)

}

</script>

<script>

//这样是错误的,会提示func未定义,主要是在调用func之前没有定义

func(1)

var func = function(a)

{

alert(a)

}

//这样是正确的,在调用func之前有定义

var func = function(a)

{

alert(a)

}

func(1)

</script>

用同样的方法可以去理解第三种定义方式。

第四种定义方式也是需要声明对象后才可以引用。