2015-11-19 92 views
3

我想添加一個高度方法,但現在當我打電話時沒有()。 我如何使用它作爲方法benji.height()方法?我的意思是在最後使用括號?通過原型添加方法

function Dog() { 
    this.tail = true; 
    this.height = 33; 

} 
var benji = new Dog(); 
var rusty = new Dog(); 

Dog.prototype.height = function() { 
    return "the height is " + this.height + " cms"; 
}; 

console.log(benji.height); 
+0

@Tushar代碼在你面前。我問,爲什麼我不能使用benji.height()調用高度方法。相反,我只是使用benji.height ..? –

+3

因爲你有一個「高度」字段。給你的領域和方法提供明確的名字。 –

+1

爲什麼不重命名該方法? [像'getHeight'](http://jsfiddle.net/o6pdvkn1/)?更有意義。考慮這個問題的最簡單方法就是方法不是名詞。 – Andy

回答

1

您有一個名爲height領域,你想添加一個名爲height方法。
你需要給它一個毫不含糊的名字,它會起作用。

function Dog() { 
 
    this.tail = true; 
 
    this.height = 33; 
 

 
} 
 
var benji = new Dog(); 
 
var rusty = new Dog(); 
 

 
Dog.prototype.getHeight = function() { 
 
    return "the height is " + this.height + " cms"; 
 
}; 
 

 
document.body.innerHTML = "<b>height:</b> " + (benji.height) + "<br/>"; 
 
document.body.innerHTML += "<b>getHeight():</b> " + benji.getHeight();

+0

是的,但在控制檯或純Js我可以使用getHeight()? –

+0

謝謝...它的工作.. –

1

所以,你必須在這兩個地方的對象和對象的原型高度可變的。所以根據原型鏈,它將首先在Object中查找,然後在原型中查找。

這裏

function Dog() { 
    this.tail = true; 
    this.height = 33; 

} 

高度變量將存儲在對象,因此它會找到高度不是功能的原因,你是不是能夠調用作爲benji.height();

所以其他用戶建議只是改變你可以根據需要調用它的函數名稱。

相關問題