javascript - 如何访问原型(prototype)链中被自身属性遮蔽的属性?

标签 javascript inheritance

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

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();

但这已被弃用。

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

关于javascript - 如何访问原型(prototype)链中被自身属性遮蔽的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132318/

相关文章:

c++ - 从公共(public)派生类访问 protected 成员

javascript - Angular2 将 html 传递给组件

javascript - React Typescript Log in不发送请求,但重新渲染主要组件

c++ - 派生类指针如何调用基类函数

c++ - 强制执行纯虚函数实现,可能使用不同的参数类型

python:继承类中连续的 __getitem__() 调用?

c++ - 模板类继承

javascript - 你如何在两个功能之间暂停?

javascript - 图片加载功能,它是如何工作的?

javascript - 未选择命令时如何创建 yargs 默认响应