我有以下一段代码用于学习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