我们能否在Windows 8 Metro风格应用程序的开发中使用Mixin pattern of Mootools?换句话说,我们可以用Mootool的类覆盖/替换/扩展WinJS.Class吗?
问题2:
例如,在MooTools的,如果我们有一个基类人力:
var Human = new Class({
initialize: function(name, age) {
this.name = name;
this.age = age;
},
isAlive: true,
energy: 1,
eat: function() {
this.energy = this.energy + 1; //same as this.energy++
}
});
(使用密新)的接口类战士:
var Warrior = new Class({
energy: 100,
kills: 0,
attack: function(target) {
target.isAlive = false;
this.energy = this.energy - 5;
this.kills++;
}
});
和导出/混凝土类忍者:
var Ninja = new Class({
Extends: Human,
Implements: Warrior,
initialize: function(name, age, side) {
this.side = side;
this.parent(name, age);
}
});
我们怎么会说这在WinJS口音使用WinJS.Class.define,WinJS.Class.derive和WinJS.Class.mix?
+ 1的方式是如何克莱德“混淆”的忍者实例化。很好的答案!在语法上,调用父类(或超类)在派生类中是有意义的。但是如果我们能够识别基类中的调用者,调用这个调用方法也是可行的。对于多态的目的,是否有可能在基类中知道调用者(在Mootools和WinJS中)?像Human :: eat功能中的alert(e.name)这样的东西。 –
在早期版本的WinJS中,有一个超级属性指向你的“基类”,但是我们发现了一个令人讨厌的无限循环可能性,并且没有办法在剩下的时间内修复它。由于继承层次在JavaScript中相当罕见,我们决定删除super。对于那些需要它的人,你可以显式地调用基类的构造函数(就像我对人类的调用一样)。 –
我不确定你的意思是“知道来电者”?这个引用仍然指向你的对象的状态,所以任何设置仍然可用。我不知道MooTools,因此无法评论该工具箱可能的功能。 –