我剛剛收到了Javascript:Douglas Crockford的Good Part,我在理解他的一個關於原型的例子時遇到了一些困難。本書中的代碼如下:關於javascript練習的混淆
if (typeof Object.create !== "function") {
Object.create = function(o) {
var F = function() {}
F.prototype = o;
return new F;
};
}
我假設這段代碼是用來定位函數的原型。但爲什麼要使用這種複雜的方法?爲什麼不使用variable
。原型? Crockford是Javascript領域的頂尖專家,所以我相信使用這個模型有一個很好的理由。任何人都能幫助我更好地理解它嗎?任何幫助,將不勝感激。
@ CMS - 但在這種情況下,Object.create被設置爲空函數。所以這裏沒有遺產......對吧?另外,由於Object.create是Object構造函數的一個方法,因此將它設置爲一個空函數會是null。 – dopatraman
@codeninja,我不明白你爲什麼說'Object.create' *設置爲*空*功能,可能是由於最後一行('return new F;')???最後一行只是返回一個調用'F'構造函數的新對象(一個繼承自'F.prototype'的對象),它可能看起來並不熟悉,因爲最後缺少括號,但在使用'new ('new F();'相當於'new F;')... – CMS
@ CMS - 代碼讀取'Object.create = var F',將'='設置爲'function(){ }'。這是否意味着它在某種意義上被設置爲空函數? – dopatraman