javascript中创建对象的几种方式

JavaScript016

javascript中创建对象的几种方式,第1张

1.对象的字面量的形式var obj = {}

2.new 的方式来调用构造函数的形式

Object是个构造函数var obj = new Object()obj.name = '黄忠'

3.工厂方法

function fn (name) {

 // 1. 创建一个空对象

 var obj = new Object()

 // 2. 给对象添加属性和方法

 obj.name = name

 // 3. 返回一个obj对象

 return obj

}

4.构造函数

帕斯卡命名 第一个单词的第一个字母大写,后续的每一个单词的第一个字母都大写

通过this动态的给构造函数添加属性和方法

function Hero(name, weapon, equipment, blood) {

    // this 动态的给对象增加成员

    // this 指向了当前对象

    this.name = name

    this.weapon = weapon

    this.equipment = equipment

    this.blood = blood

    this.attack = function () {

      console.log(this.name + ':攻击')

    }

    this.run = function () {

      console.log(this.name + ': 加速跑')

    }

  }

  var hero1 = new Hero('黄忠', '弓箭', ['头盔', '靴子'], 100)

js你说的是javascript吗?如果是javascript如下:

第一种:Object构造函数创建

var Person = new Object()

Person.name = 'Nike'Person.age = 29

第二种:使用对象字面量表示法

var Person = {}//相当于var Person = new Object()

var Person = { name:'Nike' age:29 

}

还有好多种的。我就简单写2个。

可以参考如下内容:

第一种模式:工厂方式

[javascript] view plain copy print?

var lev=function(){

return "啊打"

}

function Parent(){

var Child = new Object()

Child.name="李小龙"

Child.age="30"

Child.lev=lev

return Child

}

var x = Parent()

alert(x.name)

alert(x.lev())

说明:

1.在函数中定义对象,并定义对象的各种属性,,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法

2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent()因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象

3.在函数的最后返回该对象

4.不推荐使用这种方式创建对象,但应该了解

第二种模式:构造函数方式

[javascript] view plain copy print?

var lev=function(){

return "啊打"

}

function Parent(){

this.name="李小龙"

this.age="30"

this.lev=lev

}

var x =new Parent()

alert(x.name)

alert(x.lev())

说明:

1.与工厂方式相比,使用构造函数方式创建对象,无需再函数内部重建创建对象,而使用this指代,并而函数无需明确return

2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外

3..同样的,不推荐使用这种方式创建对象,但仍需要了解

第3种模式:原型模式

[javascript] view plain copy print?

var lev=function(){

return "啊打"

}

function Parent(){

}

Parent.prototype.name="李小龙"

Parent.prototype.age="30"

Parent.prototype.lev=lev

var x =new Parent()

alert(x.name)

alert(x.lev())