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...segmentfault

相關文章
相關標籤/搜索