時調用正確的代碼應該是
var foo = function(){};
foo.prototype.value = 5;
foo.prototype.addValue = function(){ foo.value = 6; }
function bar(func)
{
func(); // I'm running the function!
}
bar(foo.prototype.addValue); // pass in the function
alert(foo.value);
或
var foo = function(){};
foo.prototype.value = 5;
foo.prototype.addValue = function(){ foo.value = 6; }
function bar(func)
{
func(); // I'm running the function!
}
bar(new foo().addValue); // pass in the function
alert(foo.value);
既然你聲明一個名爲addValue的原型,foo本身不包含addValue。要引用該函數,您必須使用foo.prototype.addValue。請注意,在這種情況下,foo包含foo.prototype.value值爲5,foo.value值爲6.
或者,如果意圖是創建新對象,則該對象將繼承addValue函數,因此調用新的foo()。addValue起作用。
該代碼錯誤;要麼是打錯輸入,要麼該書非常糟糕。 'addValue'應該使用'this'。 – SLaks
在'bar(func)'函數中,您試圖調用未定義的'func()'。 – Unknown