因此,我尝试使用替代方法设置原型继承,而我遇到了一种对我来说似乎很奇怪的行为。这是我的课程:
function Animal(name) {
this.name = name;
}
Animal.prototype.eat = function() {
console.log("mmm... food...")
};
function Dog(name) {
this.name = name
};
var Surrogate = function() {}
Surrogate.prototype = Animal.prototype;
现在,我想将Animal设置为基类。如果我创建代理实例:
浏览器控制台说s是Surrogate的一个实例。
但是,当我将Dog类的原型设置为Surrogate实例时:
它成为动物的实例吗?为什么会这样呢?这是正确的还是我的解释是错误的?
使用替代方法
提示:Object.create
为此使用已经十年了:-)
它成为动物的实例吗?
否。它仍然是完全相同的对象,并且功能未更改。这是一个instanceof Animal
就像它以前去过。
在Animal {}
您在控制台中看到的是一个自定义显示选择的调试器。
为什么会这样呢?
我的猜测是,您看到一个内部优化的.prototype
副作用,当将一个对象分配为function的对象时,会发生这种情况,这只能在调试器中观察到。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句