私はあなたの目標を完全には達成していません。この動作は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
call
JSFiddleはこちら