乐趣区

JS对象创建的几种方式

一. 创建对象的几种方式

1. 使用 new 关键字创建

var ob = new Object()
ob.name = 'name'
ob.say = function() {}

2. 使用字面量的方式创建

var ob = {
name: 'name',
say: function() {}
}

3. 使用工厂模式创建

 批量创建对象的方式 
function createOb (name){var ob = new Object()
    ob.name = name
    ob.say = function() {}
    return ob
}
var ob1 = createOb('zhang')
var ob2 = createOb('san')

4. 构造函数的方式创建

 构造函数需要大写 
function Parent(name) {
    this.name = name
    this.say = function() {}
}
var child1 = new Parent('child1')
var child2 = new Parent('child2')

5. 原型方式创建

 当我们创建一个函数时,该函数就会具备一个 prototype 属性,这个属性指向通过构造函数创建的那个函数的原型对象。通俗点讲原型对象就是内存中为其他对象提供共享属性和方法的对象。
function Parent2(name) {
    Parent2.prototype.name = name
    Parent2.prototype.say = function() {}
}
 上述每次都需要写 Parent2.prototype, 可以优化 
function Parent3() {}
Parent3.prototype = {
    name: 'name'
    say: function(){}
}
var ob = new Parent3
 但是此处改变了 Parent3 的 constructor 属性,故我们需要显示的指出 constructor  
function Parent4() {}
Parent4.prototype = {  
    constructor: Parent4,
    name: 'name',
    say: function() {}
}
var ob = new Parent4()

6. 构造函数和原型组合模式

function Parent5(name) {this.name = name}
Parent5.prototype = {
    constructor: Parent5,
    say: function() {}
}
var ob = new Parent5('zhang')

二创建空对象

var ob1 = {}
var ob2 = new Object()
var ob3 = Object.create(null)
 前两种方式创建的对象含有原型,最后一种方式创建的对象无原型,是真正意义上的空对象  

参考资料

https://segmentfault.com/a/11…

退出移动版