1 回答
TA贡献1804条经验 获得超7个赞
至少有一个很好的理由:该功能已被弃用,因此您不应将其用于将来的兼容性。__proto__
我建议阅读有关该主题的MDN页面,如果您正在学习,还可以阅读有关继承的链接页面。
有用的附加说明:使用是一种以原型方式模拟类继承的方法(b从a继承),而无需调用“父”(a)构造函数。如果您希望使用调用的“父”构造函数模拟继承,则可以使用b.prototype = Object.create(a.prototype);
b.prototype = new a();
当然,它是对类行为的模拟,它在细节上有所不同,因为原型不是类,例如,您可以在创建实例后将函数动态添加到 的原型中,并且新函数将可用于该实例,因为它通过引用工作。以类似的方式,第二个示例不会为每个后续实例执行 的构造函数,而是在将其分配给 的原型时只执行一次。a
b
a
b
实际上,当你了解原型时,我发现它们真的很强大,允许许多组合。
function a () {
console.log('a constructor');
}
a.prototype.prtSomething = function(arg) { console.log(arg); }
function b () {
console.log('b constructor');
}
b.prototype = Object.create(a.prototype);
b.prototype.constructor = b;
var myObj = new b();
展开代码段
function a () {
console.log('a constructor');
}
a.prototype.prtSomething = function(arg) { console.log(arg); }
function b () {
console.log('b constructor');
}
b.prototype = new a();
b.prototype.constructor = b;
var myObj = new b();
添加回答
举报