2010-06-01 28 views
7

下面解決了什麼「醜陋」?有些東西我沒有收到,我很感激幫助理解它是什麼。來自「Javascript - The Good Parts」的示例


例如,通過增加Function.prototype的,我們可以提供一個方法的所有功能:

Function.prototype.method = function (name, func) { 
    this.prototype[name] = func; 
    return this; 
}; 

通過與方法方法增強Function.prototype的,我們不再需要鍵入原型屬性的名稱。現在可以隱藏這一點醜陋。

回答

15

好吧,醜陋是主觀的,但讓我們來看看。

你平時寫:

function Foo() {} 
Foo.prototype.method1 = function() { /*...*/ }; 
Foo.prototype.method2 = function() { /*...*/ }; 

您與您要繼承由新的運營商創建的實例屬性擴展prototype對象constructor function

例如你正在創建的Foo構造的一個實例var obj = new Foo();,該對象將繼承所有綁定到Foo.prototype目標和其他目標的prototype chain更高的性能。

的Crockford的方法不一樣,該方法在Function.prototype對象定義,所有的功能從該對象繼承,所以你可以這樣調用方法:

function Foo() {} 
Foo.method('method1', function() { /*...*/ }); 
Foo.method('method2', function() { /*...*/ }); 

它基本上只是的從代碼,克羅克福德認爲醜陋prototype字...

「的JavaScript好的部分」確實是一個很好的書,但我認爲是基於個人的角度出發,道格拉斯Crockfor d有語言。閱讀代碼時

我同意他的觀點與很多東西,但我也有一些方面不同意...

+1

用的是「原型」,似乎更加明確和明顯。感謝您的答案:) – Matrym 2010-06-01 08:34:10

+2

我同意。在這種情況下,克羅克福德正在咆哮着錯誤的樹木。 – bobince 2010-06-03 08:25:49

相關問題