2015-10-24 79 views
1

我想添加一個函數原型這樣添加函數原型不起作用

function Dog(name, breed) { 
    this.name = name; 
    this.breed = breed; 
} 

function barkWithMe() { 
    console.log("woof woof i am " + this.name); 
} 
Dog.prototype.bark = barkWithMe(); 

var snoopy = new Dog(); 
snoopy.bark(); 

但它會顯示錯誤

Uncaught TypeError: snoopy.bark is not a function 

請告訴我,我錯了。謝謝。

+4

您正在執行的功能和指派返回值,不分配功能本身 –

+0

@Patrick謝謝 –

+0

調試你的程序。請在'Dog.prototype.bark ='行中設置斷點。跨過它。您會注意到該消息已被記錄 - 這會提醒您發生了一些奇怪的事情。然後你會檢查'Dog.prototype.bark'的值,並發現它是'未定義的' - 又一個線索。從那裏發現你不經意地調用'barkWithMe'而不是將它分配給原型。 –

回答

6

此行評估功能,並將返回值undefinedDog.prototype.bark

Dog.prototype.bark = barkWithMe(); 

將其更改爲:

Dog.prototype.bark = barkWithMe;