繁体   English   中英

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

[英]How to access properties from the prototype chain that are shadowed by own properties?

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

var obj = Object.create({
    func: function () { alert('Inherited method'); }
});

现在obj从该匿名对象继承func方法( obj的原型链接指向该匿名对象)。

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' ),那么这样做的好方法是什么?

我已经提出了一个解决方案 - 看到这里 - 但它有点像黑客。

Object.getPrototypeOf(obj).func();

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

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

obj.__proto__.func();

但这已被弃用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM