如何访问由自己的属性遮蔽的原型链中的属性?

时间:2011-08-20 14:19:48

标签: javascript inheritance

让我们创建一个继承自另一个匿名对象的对象:

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 - 但这有点像黑客。

1 个答案:

答案 0 :(得分:3)

Object.getPrototypeOf(obj).func();

将确保继承的函数被执行。

在旧版浏览器中(上面是ES5),您可以使用

obj.__proto__.func();

但不推荐使用。

http://jsfiddle.net/pimvdb/PLxHB/5/