我没有完全达到你的目标。这种行为与您对 Ruby 语言所期望的行为相同,但确实与您使用 Java 获得的行为不同(假设您将name
在子类中重新定义属性Button
) ......
实际上,您必须了解 Ember 的对象模型的实现方式才能更好地理解您得到的行为:
App = Ember.Application.create();
App.CurtainView = Ember.View.extend({
name: "CurtainView",
getName: function() {
console.log(this.get("name"));
}
});
App.ButtonView = App.CurtainView.extend({
name: "ButtonView",
getName: function() {
this._super();
}
});
var c = App.CurtainView.create(),
b = App.ButtonView.create();
console.log(c.getName.toString());
console.log(b.getName.toString());
c.getName();
b.getName();
b.getName.apply(c);
默认情况下,_super
调用适用于调用当前函数的对象。
getName
您可以通过调用apply
orcall
并传递适当的目标来覆盖此默认行为。但对我来说这似乎很奇怪......
JSFiddle在这里