让我们创建一个继承自另一个匿名对象的对象:
var obj = Object.create({
func: function () { alert('Inherited method'); }
});
现在 obj
从那个匿名对象继承了 func
方法(obj
的原型(prototype)链接指向那个匿名对象)。
obj.func(); // alerts 'Inherited method'
但如果我们在 obj
本身上分配一个 func
属性,继承的 func
属性将被隐藏:
obj.func = function () { alert('Own method'); };
obj.func(); // alerts 'Own method'
现场演示: http://jsfiddle.net/PLxHB/
现在,如果我们想调用隐藏的 func
方法(提醒 'Inherited method'
的方法),执行此操作的好方法是什么?
我已经想出了一个解决方案 - see here - 但它有点像黑客。
最佳答案
Object.getPrototypeOf(obj).func();
将确保继承的函数得到执行。
在旧版浏览器中(以上为ES5),可以使用
obj.__proto__.func();
但这已被弃用。
关于javascript - 如何访问原型(prototype)链中被自身属性遮蔽的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132318/