我想开始开发jQuery游戏,所以我需要学习jQuery OOP。我有一些(足够)的经验与C OOP(开发了一些游戏)。
我知道我可以用jQuery“对象”来替换C“类”,但是我不知道它是如何工作的。
jQuery还有更高级的“选项”像C? (抽象类/对象,不透明等)
你能解释一下吗? (或给我链接到一些好的JavaScript OOP教程)。
解决方法
JavaScript中的OOP编程可以通过多种方式完成。周围有很多模式。
我会给你两个,一个实现对象继承和一个对象组合的实现。
这和jQuery绝对没有任何关系。 jQuery应该用于DOM操作和事件处理。你不应该使用基于jQuery对象的核心对象和构造函数。在一个游戏中,jQuery的作用是读取键盘输入并可选地将图形渲染到DOM中(如果由于某种原因不使用< canvas>)。
遗产
var Constructor = function(name) { this.name = name }; Constructor.prototype.mymethod = function() { alert("my name is : " + this.name); }; var obj = new Constructor("foo"); obj.mymethod(); // my name is : foo
这里定义了一个可以调用来创建一个新对象的构造函数。你用这个引用构造函数中的对象。
您可以将(静态)方法和变量添加到将由对象继承的构造函数的原型中。
function inherits(child,parent) { var f = new Function; f.prototype = parent.prototype; f.prototype.constructor = parent; child.prototype = new f; child.prototype.constructor = child; }
您可以使用一个继承函数,该函数将构造函数的原型设置为不同构造函数的实例。这意味着该父对象的所有方法和属性都可用于子对象
var SecondConstructor = function(name) { this.name = name + "bar"; }; inherits(SecondConstructor,Constructor); var obj = new SecondConstructor("foo"); obj.mymethod(); // my name is : foobar
这是JavaScripts的原型继承。基本上你将一个函数的原型设置为一个特定的对象。然后当您使用该功能创建对象时,这些对象实现原型。
组成
使用原型实际上并不是必需的,您也可以使用对象组合。这种方法确实需要很好地理解你可以阅读的关于elsewhere的这个状态。
我要作弊,把一些乏味的帮手功能委托给underscore.js
var Constructor = function(name) { this.name = name; this.mymethod = function() { alert("my name is : " + this.name); }; }; var SecondConstructor = function(name) { var constructor = new Constructor(name + "bar"); _.bindAll(constructor); _.extend(this,{ "mymethod": constructor.mymethod }); }; var obj = new SecondConstructor("foo"); obj.mymethod();
这里SecondConstructor为自己创建一个构造函数的实例,而不是继承自己。然后,将该引用绑定到该构造函数对象的所有方法上,以便我们可以将mymethod的调用委托给我们自己的构造函数对象。这只适用于方法,但这不应该是一个问题,因为你真的不应该有公共字段。