我試圖創建對象不同的方式,並試圖觀察以各種方式創建的對象的原型屬性。「原型」屬性不適用於所有的對象創建方式
var a = {a: 1};
//The prototype chain as mentioned in [here][1]
// a ---> Object.prototype ---> null
現在,我觀察到a.prototype是未定義的。 問題1:如果未定義,那麼原型鏈是如何形成的? a.hasOwnProperty因爲原型鏈而存在。
現在,如果我說:
var myFunc = function(){};
// Prototype chain: myFunc ---> Function.prototype ---> Object.prototype ---> null
創造的這種方式,myFunc.prototype存在。
問題2:爲何存在這種差異?
'prototype'是一個只有函數纔有的特殊屬性。 –
構造函數具有原型,您可以使用Object.create創建一個(空或第二個參數)對象與傳遞的對象(第一個參數)作爲用於查找原型鏈的第一個原型。更多關於這是如何工作的:http://stackoverflow.com/a/16063711/1641941 – HMR