背景:乙個筆試題簡答談到new操作符都幹了什麼?連續兩次遇到,總結一下,不然不會的還是不會new 共經過了4個階段:
1.建立乙個空物件
let obj = new object();
2.鏈結到原型
把 obj 的proto指向建構函式func的原型物件 prototype,此時便建立了 obj 物件的原型鏈:
obj->func.prototype->object.prototype->null
**為:
obj.__proto__ = func.prototype;
3.繫結this值(讓func中的this指向obj,並執行func的函式體。)
let result = func.call(obj);
4.返回新物件
(判斷func的返回值型別:
如果無返回值 或者 返回乙個非物件值,則將 obj 作為新物件返回;否則會將 result 作為新物件返回。)
if (typeof(result) == "object")
else
new操作符具體幹了什麼呢
考察對new關鍵的深刻認識,是否對前端知識有專研,如果沒有專研的人,肯定說建立了乙個物件,恭喜你面試官知道你是小菜鳥來的,這次面試基本上沒有太大的希望了。一定要對new過程的4個步驟非常清楚,這樣才能深深地抓住面試官的心!new共經過了4幾個階段 1 建立乙個空物件 varobj new objec...
js中new操作符到底幹了什麼?
先看乙個例子 function person person.prototype.test function let p1 newperson console.log p1.name andy console.log p1.age 20 p1.say hello everybody p1.test t...
New操作符到底幹了什麼事
function fun foo.prototype.z 12 在foo物件的原型上新增了乙個屬性z var obj new fun foo原型進行了例項化 obj.age 18 在obj物件上新增了乙個屬性age 1 建立了乙個空物件 2 設定原型鏈 obj.proto foo.prototype...