我有以下一段代碼用於學習JS。Javascript原型繼承和對象構造函數
function CircleArea(x)
{
this.x = x;
}
CircleArea.prototype =
{
area: function() {
return 22/7 * this.x * this.x;
}
};
var CalArea = new CircleArea(7);
if(CalArea.constructor === CircleArea.prototype.constructor)
{
alert(CalArea.area());
}
我通過分配對象文本CircleArea.prototype解耦繼承鏈,然後使用CircleArea構造定義CalArea對象。現在,CalArea.constructor和CircleArea.prototype.constructor基本上都是Object構造函數而不是CircleArea構造函數,但是當我在alert函數內調用CalArea.area()時,this.x獲得7作爲其值,而值7作爲參數傳遞給CircleArea構造函數而不是CalArea.constructor和CircleArea.prototype構造函數現在引用的Object構造函數。
相關:[爲什麼要設置原型構造?(http://stackoverflow.com/questions/8453887/why-is-it-necessary-to- set-the-prototype-constructor) –
你的問題是什麼? –
問題是何時CalArea構造函數和CircleArea原型構造函數引用Object構造函數如何調用CalArea對象上的area()方法獲取this.x = 7.雖然將值7傳遞給CircleArea構造函數而不是Object構造函數? – user2913184