gpt4 book ai didi

javascript - Mootools 和 Win8 Store 应用程序开发

转载 作者:行者123 更新时间:2023-11-30 13:14:45 27 4
gpt4 key购买 nike

问题 1:

我们可以使用Mixin pattern of Mootools吗?在开发 Windows 8 Metro 风格的应用程序?换句话说,我们可以覆盖/替换/扩展WinJS.Class吗?与 Mootool 的类(class)?

问题 2:

例如,在 Mootools 中,如果我们有一个基类 Human:

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++
}
});

(使用 Mixin)一个接口(interface)类 Warrior:

var Warrior = new Class({
energy: 100,
kills: 0,
attack: function(target) {
target.isAlive = false;
this.energy = this.energy - 5;
this.kills++;
}
});

和一个派生/具体类 Ninja:

var Ninja = new Class({
Extends: Human,
Implements: Warrior,
initialize: function(name, age, side) {
this.side = side;
this.parent(name, age);
}
});



我们如何使用 WinJS.Class.define 用 WinJS 口音说这个, WinJS.Class.deriveWinJS.Class.mix

最佳答案

如果您想在您的 WinJS 应用程序中使用 MooTools,它应该可以在大多数情况下正常工作。启动时可能会有一些警告,但只要不违反动态生成内容的安全框架,MooTools 本身就应该可以正常工作。我不会尝试将 MooTools 的代码拼接到 WinJS 中,只是按原样使用它。

WinJS.Class 方法与 MooTools 一样,在底层定义 JavaScript 原型(prototype)。无论您使用的是 MooTools 还是 WinJS,您定义的“类型”都应该协同工作。

至于你的第二个问题,我认为你可以只用 WinJS 做你需要的一切,只是语法不同而已。

定义“人类”构造函数很简单:

var Human = WinJS.Class.define(
function(name, age) {
this.name = name;
this.age = age;
},
{
isAlive: true,
energy: 1,
eat: function() {
this.energy = this.energy + 1;
}
}
);

mixin 被简单地定义为一个对象:

var Warrior = {
energy: 100,
kills: 0,
attack: function(target) {
target.isAlive = false;
this.energy = this.energy - 5;
this.kills++;
}
};

要进行派生,您可以使用 WinJS.Class.derive。这只给你继承部分:

var Ninja = WinJS.Class.derive(Human,
function(name, age, side) {
this.side = side;
Human.call(this, name, age);
}
);

然后通过 WinJS.Class.mix 进行混合:

WinJS.Class.mix(Ninja, Warrior);

你应该准备好了:

var clyde = new Ninja("Clyde", "12", "confused");

关于javascript - Mootools 和 Win8 Store 应用程序开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12427061/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com