先隨意寫乙個建構函式,然後建立兩個它的例項物件。
對於例項box1,box2他們有乙個指標__proto__
,共同指向 box.prototype
(box1.__proto__ === box2.__proto__) && (box1.__proto__ === box.prototype) //true
列印出 box1.__proto__
, 得出以下結果:
object:
- constructor:
function
box(age)
- run:
function
() - __proto__:
object
{}
可以看出box1的原型指標指向box. prototype的物件屬性,起物件屬性裡面包含三個屬性:
1. constructor,
2. 乙個原型裡面定義的函式或者變數: run,
3. 還有乙個指向object.prototype的指標`__proto__`
(1)constructor 就是此建構函式在例項化以前還是普通函式的樣子, 可以看上面的圖。
box1.constructor === box //true
box1.__proto__.constructor === box1.constructor
//true
box1.__proto__.constructor === box //true
可以這樣把它當成一般函式用:
box1.constructor(50) //50
和這個是乙個意思.
box(50); //50
這只是為了加深理解,應該沒有人會這麼用。
(2)接下來原型裡的函式或者變數
box1.run === box2.run //true
每個例項物件其原型都是指向乙個地方,或者說是共用的,請看上圖理解。
(3)原型鏈指向object.prototype.
box1.__proto__.__proto__ === object.prototype //true
所以:
box1 instanceof box; //true
box instanceof
object; //true
box1 instanceof
object; //true
總結: 對於例項物件來說,分成兩個部分:
一, 例項物件的屬性部分,這部分每個例項物件的位址不一樣;
二, 例項物件的原型部分,這部分每個例項物件都指向同乙個原型位址。
js建構函式和原型
建立物件的方式 1,物件字面量 var obj1 2,new object var obj2 new object 3,利用建構函式建立物件 建構函式 利用建構函式 可以建立很多個物件 建構函式,把物件中公共屬性和方法抽出來,放在建構函式裡,通過new建立不同的物件 function star na...
js關於原型建構函式和原型鏈的理解
js的物件導向方式的函式有很多種方式,其中有兩個比較重要的是兩種方式一是建構函式模式,一是原型模式。1 建構函式模式如 function persion name,age var person1 new person alex 29 person1.sayname alex var person2 ...
面對物件 建構函式
1.使用建構函式 作用 要建立同乙個物件的多個例項,就要反覆建立例項的過程 建立物件 新增屬性 定義方法等就會很麻煩。因此要考慮建構函式 只有乙個全域性例項的物件有時候成為 單例 物件,在有些場合很實用,如程式的使用者只有乙個相關的userprofile物件,其中包括他的名字 最後訪問的頁面等類似屬...