让我们创建一个继承自另一个匿名对象的对象:
var obj = Object.create({
func: function () { alert('Inherited method'); }
});
现在obj
从该匿名对象继承func
方法(obj
的原型链接指向该匿名对象)。
obj.func(); // alerts 'Inherited method'
但是,如果我们在func
本身分配obj
属性,则继承的func
属性将隐藏:
obj.func = function () { alert('Own method'); };
obj.func(); // alerts 'Own method'
现场演示: http://jsfiddle.net/PLxHB/
现在,如果我们想要调用那个带阴影的func
方法(提醒'Inherited method'
的方法),那么这样做的好方法是什么?
我已经提出了一个解决方案 - see here - 但这有点像黑客。
答案 0 :(得分:3)
Object.getPrototypeOf(obj).func();
将确保继承的函数被执行。
在旧版浏览器中(上面是ES5),您可以使用
obj.__proto__.func();
但不推荐使用。