對於本篇對於如何自定義物件、和物件相關的屬性操作不了解的話,可以查我對這兩篇部落格。了解這兩篇可以更容易理解本篇文章
用建構函式建立了乙個物件
obj物件的本身建立了兩個屬性 x=1 ,y=2
物件本的的兩個屬性都有屬性特徵 writable是否可寫的,enumerable是否可列舉的 configurable是否可重置的,getter ,setter
obj物件本身也有三大特性 proto 原型 class 類 extensible可拓展
foo.prototype是物件上的原型 , foo.prototype也是個物件。
z=3是foo.prototype是物件上原型的屬性。
再往上object.prototype是乙個頂級屬性,是所有物件的原型。
再上往上就是null 空了。 此時就形成了乙個原型鏈。
我再用**來一一解析,用演示**再向大家詳細解釋:
1再來了解一下得到物件上屬性的優先順序。
如果在物件本身上有這個屬性,則得到的是物件上本身的屬性。
如果物件本身上有這個屬性,則向他的原型上查詢。
如果再沒有再向頂級屬性上查詢。
如果原型上和物件本身上都有這個屬性,則還是先用物件本身的屬性
為了讓大家更好的了解,演示**如下:
1通過 var obj = object.create({x:1}) 來建立物件來解析物件、物件上的原型
其實obj.create圓括號裡面定義物件和屬性就是obj物件的原型和原型屬性,
演示**如下:
1通過in來解釋某個物件上是否有這個屬性:
演示**如下:
1通過hasownproperty查詢是否是物件本身的屬性,而不是繼承來的屬性
1我們最後來看看用var obj = objcet.create()來建立的物件如何來檢測他的屬性。
如果想沒有任何繼續屬性的話可以寫 var obj = object.create(null) 則不繼承任何屬性
演示**:
1
JS原型物件,原型鏈
js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...
JS 物件 JS原型 原型鏈
參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...
js原型物件 原型鏈 繼承
原型物件 只要建立了乙個新函式,就會根據一些特定的規則為該函式建立乙個prototype屬性,這個屬性指向的物件就是該新函式的原型物件。預設情況下,所有原型物件都會自動獲取乙個constructor屬性,這個屬性是乙個指向prototype屬性所在函式的指標 原型物件的優點 可以讓所有物件例項共享它...