2011-08-20 45 views
4

让我们创建这从另一个匿名对象继承的对象:如何访问被自己的属性遮蔽的原型链中的属性?

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方法(提醒的方法),那么做什么是一个好方法?

我已经想出了一个解决方案 - see here - 但它是一种黑客。

回答

3
Object.getPrototypeOf(obj).func(); 

将确保继承的函数得到执行。

在旧的浏览器(上面是ES5),你可以使用

obj.__proto__.func(); 

,但是不赞成这种方式。

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

+0

是啊...... ES5来保存一天':)' –

+0

这是一个遗憾,他们没有一个方法去替代 - 比如'obj.proto()FUNC()'。 。那样会更方便... –

+0

@ŠimeVidas:JavaScipt根本不是最方便的语言... – pimvdb

相关问题