我在过去使用过Prototype.js并能够编写类uing:
var XEventDesc = Class.create();
XEventDesc.prototype = {
initialize: function(element, eventName, handler, useCapture) {
....................
}
};
如何使用jQuery在Javascript中编写类
答案 0 :(得分:7)
你真的需要使用jQuery来创建一个类吗? javascript对象只是一个函数。
var Rectangle = function(width,height) {
//This section is similar to the initialize() method from prototypejs.
this.width = width;
this.height= height;
//Adding a method to an object
this.getArea = function () {
return this.width*this.height;
}
}
var myRect = new Rectangle(3,4);
alert(myRect.getArea()); //Alerts 12
答案 1 :(得分:1)
jQuery支持 extend 方法(http://api.jquery.com/jQuery.extend/),它通过允许您根据需要扩展具有多个对象属性的对象来模仿多重继承。这只是模仿多重继承,因为它实际上使用for循环迭代其他对象的属性并将它们附加到目标对象 - 如果它实际提供了多重继承,您将能够添加/删除/修改属性来自其中一个超级对象,并且具有子对象继承的更改,但情况并非如此。
要使用 jQuery.extend ,您需要提供目标对象作为第一个参数,并使用其他参数将其扩展为以下参数。但要小心,因为如果只指定第一个对象,则所有对象的属性都将用于扩展jQuery本身。
(function($) {
var SuperOne = {
methodOne: function() {
alert("I am an object");
},
methodTwo: function(param) {
// do something
}
},
SuperTwo = {
attributeOne: 'I am a super object',
getAttributeOne: function() {
return this.attributeOne;
},
setAttributeOne: function(attributeOne) {
this.attributeOne = attributeOne;
}
},
SubOne = $.extend({
subMethodOne: function() {
return 'I inherit from others.';
}
}, SuperOne, SuperTwo);
alert(SubOne.getAttributeOne()); ///<-- alerts, "I am a super object"
SuperTwo.setAttributeOne("I am SuperTwo!");
alert(SubOne.getAttributeOne()); ///<-- alerts, "I am a super object", still
SuperOne.methodOne = function() {
alert("I am SuperOne!");
};
SubOne.methodOne(); ///<-- alerts, "I am an object", instead of, "I am SuperOne!"
}(jQuery));
答案 2 :(得分:0)
似乎有一些jQuery插件可以做到这一点(例如,http://plugins.jquery.com/project/HJS)。但是,您可能会在jQuery之外找到更适合您需求的东西。
答案 3 :(得分:0)
要理解的基本要点是Javascript没有类的概念。它使用所谓的原型继承。
而不是“这是一个蓝图。从中构建对象。”,Javascript基于“这是一个原型。大规模生产它。” (函数代表类,因此您可以创建一个完全可用的函数,然后告诉Javascript创建更多函数或将其用作定义其他函数的参考点)
以下是对这种范例的含义以及如何在JS中实现继承的一些解释:(以防万一其中某些方法以您遇到问题的方式解释它)