建立物件的幾種方式和new關鍵字背後的原理

2021-08-17 15:49:02 字數 962 閱讀 4589

一、建立物件的方式

我總結了三種

1.使用字面量建立物件

var obj1 = ;

2.使用object建構函式建立物件

var obj2 = new object();

3.使用建構函式建立物件

function foo();

var obj3 = new foo();

其實方法2和方法3是屬於同一種方式

4.使用object.create()方法建立乙個物件

var obj4 = ;

var obj5 = object.create(obj4);

通過object.create方法建立的物件。

比如說方法4,obj5的原型就是obj4.

二、new關鍵字背後的原理

這一塊我也不是很懂。

簡而言之,就是說,

1.會建立乙個新物件obj,繼承建構函式的prototype

2.執行建構函式,並將obj的上下文環境繫結

判斷建構函式的返回值,如果是乙個物件,則返回該物件,如果不是,返回obj。

var new = function(fn);

obj.__proto__ = fn.prototype;

var res = fn.call(obj);

return typeof res === 'object'?res:obj;

}

通過new運算子的原理,我們知道了,

function fn()

var obj = new fn();

如果fn函式return了乙個新物件,那麼這個新物件就會賦值給obj,而且該物件的原型鏈就會直接指向了object.prototype;不是fn.prototype

建立物件的幾種方式

原文章 var person new object person.name kevin person.age 31 alert person.name alert person name alert person.name alert person 5 返回帶有屬性和方法的person物件 func...

建立物件的幾種方式

var person new object person.name lisi person.age 21 person.family lida lier wangwu person.say function var person 以上兩種方法在使用同一介面建立多個物件時,會產生大量重複 為了解決此問...

建立物件的幾種方式

let student function student name,age,likename return student let s1 student 小紅 18 吃大餐 s1.like 可以將都需要用到的方法進行封裝,封裝到乙個物件上,並讓建構函式的prototype屬性等於這個物件,這樣建立新...