我有以下原型链
每个都有一个名为do
的方法。
调用相应的超类方法的常用方法是什么?
目前我使用<ClassName>.prototype.__proto__.<methodName>.call(this)
但看起来很奇怪。
使用以下代码打印控制台(按预期方式):
SuperSuperClass = function SuperSuperClass() {}
SuperSuperClass.prototype.do = function() {
console.log('SuperSuperClass.prototype.do');
};
function SuperClass() {
SuperSuperClass.call(this);
}
SuperClass.prototype = Object.create(SuperSuperClass.prototype);
SuperClass.prototype.constructor = SuperClass;
SuperClass.prototype.do = function() {
console.log('SuperClass.prototype.do');
SuperClass.prototype.__proto__.do.call(this);
};
function Class() {
SuperClass.call(this);
}
Class.prototype = Object.create(SuperClass.prototype);
Class.prototype.constructor = Class;
Class.prototype.do = function() {
console.log('Class.prototype.do');
Class.prototype.__proto__.do.call(this);
};
var objClass = new Class();
objClass.do();
答案 0 :(得分:3)
调用相应超类方法的常用方法是什么?
使用<SuperClassName>.prototype.<methodName>.call(this)
。它不仅更短,而且还有利于在不支持非标准__proto__
财产的环境中工作。