这似乎是一个愚蠢的问题,但是......
如果我们有一个构造函数:
function Candy(name) {
this.name = name;
}
我们扩展这个对象 Candy 的原型:
Candy.prototype.printName = function(name) {
console.log(this.name);
};
然后我们从 Candy 构造函数创建一个新对象,并为这个新对象运行继承的方法:
var chocolate = new Candy("chocolate");
chocolate.printName();
至于为什么我们得到巧克力作为输出,这不是我的想法。
当我们从构造函数创建巧克力对象时,我们本质上是这样做的:
var chocolate = new Candy();
chocolate.name = name;
如果是这样,为什么当我们运行时:
chocolate.printName();
有一个空白的论点,它吐出:“巧克力”?
巧克力不就是我们用 Candy 构造器构建的对象的名称吗?
例如,巧克力不是我们指定的巧克力名称参数,而是名称。既然我们传递了一个空的参数字段,为什么我们会得到“巧克力”而不是名字呢?