使用關鍵字new建立新例項物件經過了以下幾步:
1、建立乙個新物件,如:var person = {};
(新物件的proto屬性指向建構函式的原型物件。)
2、將建構函式的作用域賦值給新物件。(也所以this物件指向新物件)
3、執行建構函式內部的**,將屬性新增給person中的this物件。
4、返回新物件person。
person._proto_ = person.prototype;//引用建構函式的原型物件
person.call(person);//將建構函式的作用域給person,即:this值指向person
function.methos("new", function () );
通過new關鍵字建立某建構函式的新例項物件,就是將原型鏈與例項的this聯絡起來,this指向這個新物件,同時也指向這個建構函式,並且this物件還是這個建構函式的例項。如果沒有使用new操作符,直接用建構函式建立新例項物件,那麼this物件就指向了window物件,不會指向這個新物件的,不管給這個新物件新增什麼屬性,都沒有用,是直接新增到了window物件上了。
new乙個物件發生什麼?
doctype html en utf 8 viewport content width device width,initial scale 1.0 x ua compatible content ie edge document title head 物件直接量 自變數 var zs new o...
物件 new乙個
1格式格式 class 類名 類名 要求符合大駝峰命名法,見名知意 類名這裡可以認為是乙個資料型別名,自定義資料型別 屬性描述 描述當前類有哪些屬性 例如 人類的身高體重,年齡姓名 行為描述 描述當前類有哪些行為 例如 人類的吃飯行為,睡覺行為,打遊戲行為依葫蘆畫瓢格式 scanner掃瞄器 sca...
js的new操作符具體做了什麼
建立乙個空物件 把空物件的原型設為建構函式的原型 把建構函式的指標指向這個空物件並傳參 最後返回例項 function likenew obj,args newobj.proto obj.prototype 可將前兩步合併 let newobj object.create obj.prototype...