我正在閱讀道格拉斯克羅克福德的JavaScript:好部件,我對某事有些困惑。在第4章的擴充類型下,他創建了添加方法的快捷方式。在JavaScript中增加類型
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
他說:
通過與「法」的方法增強Function.prototype的,我們不再 必須鍵入原型屬性的名稱。現在可以隱藏這個醜點 。
然後,他繼續用這個來爲這個數字原型添加一個'整數'方法。
Number.method('integer', function() {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
document.writeln((-10/3).integer()); // -3
我有點困惑在這裏...因爲我們增加了一個「方法」方法將功能樣機,數量不限原型。據我所知,Number對象不會從函數原型繼承(雖然也許我錯了)。我看到這是有效的,但我不明白爲什麼Number對象能夠使用這個'method'方法來添加...方法。
這是一個很酷的問題。我花了一段時間才明白代碼,但我終於明白了。 – Paul
感謝所有的好答案。現在有道理。 –
我的問題的後續是第一個代碼點。我想我不明白他的報價。這種「方法」方法如何比直接將方法直接添加到Number原型更高效或更好?像這樣:Number.prototype.integer = function(){ return Math [this <0? 'ceil':'floor'](this); } –