Javascript 如何从原型链访问被自己的属性遮挡的属性?
让我们创建一个从另一个匿名对象继承的对象:Javascript 如何从原型链访问被自己的属性遮挡的属性?,javascript,inheritance,Javascript,Inheritance,让我们创建一个从另一个匿名对象继承的对象: var obj = Object.create({ func: function () { alert('Inherited method'); } }); 现在,obj从该匿名对象继承了func方法(obj的原型链接指向该匿名对象) 但是,如果我们在obj本身上分配func属性,继承的func属性将被隐藏: obj.func = function () { alert('Own method'); }; obj.func(); // al
var obj = Object.create({
func: function () { alert('Inherited method'); }
});
现在,obj
从该匿名对象继承了func
方法(obj
的原型链接指向该匿名对象)
但是,如果我们在obj
本身上分配func
属性,继承的func
属性将被隐藏:
obj.func = function () { alert('Own method'); };
obj.func(); // alerts 'Own method'
现场演示:
现在,如果我们想调用隐藏的func
方法(警告'Inherited method'
),有什么好方法
我已经想出了一个解决办法--但这有点像黑客
Object.getPrototypeOf(obj).func();
将确保执行继承的函数
在较旧的浏览器(上面是ES5)中,您可以使用
obj.__proto__.func();
但这是不赞成的
啊,是的。。。ES5来拯救这一天
:)
很遗憾,他们没有使用类似于obj.proto().func()
的方法。那会更方便。。。
obj.__proto__.func();