【发布时间】:2020-07-11 13:31:19
【问题描述】:
我正在学习 Javascript 中的原型和原型链,但我对以下问题感到困惑。假设我在下面有构造函数:
function Circle() {
this.radius = 1;
}
let c1 = new Circle();
Circle.prototype.toString = function() {
console.log('The radius is: ' + this.radius);
}
c1.toString(); // "The radius is: 1"
在上面的例子中,c1 和Circle 都为它们的原型引用了内存中的同一个对象。 toString 函数是在原型上定义的,而不是在构造函数中。所以,当我在c1 上调用toString 时,javascript 引擎应该首先查看c1,然后查看包含toString 函数的原型对象。它正在“向上”查找原型链。
我的问题是,为什么this.radius 有效?原型上定义的 toString 函数如何知道构造函数中定义的实例成员?这就像“向下”查看原型链,从原型对象到实际的实例对象。
【问题讨论】:
标签: javascript