jQuery在构造函数中打破“this”?
我正在使用jQuery并创建一些OOP Javascript功能。对象和它的构造具有以下结构:jQuery在构造函数中打破“this”?
var zoomin = new Object();
zoomin = function() { // This is my constructor
this.someFunction();
};
zoomin.prototype = {
someFunction: function() {
// More code here
}
};
当我创建zoomin的一个实例(如VAR my_zoom =新zoomin()),在构造函数中调用this.someFunction()不工作。看起来jQuery已经占据了“这个”,这就是为什么它正在崩溃。
我真的很感激任何关于如何让这个工作正常的帮助。
谢谢!
您的类定义应该是这样的:
function zoomin() { // This is my constructor
this.someFunction();
};
对于成员方法定义的,它应该是:
zoomin.prototype.someFunction = function() {
// More code here
};
或者:
$.extend(zoomin.prototype, {
someFunction : function() {
// More code here
}
});
希望这会有所帮助。干杯
你的代码相当混乱。你正在创建一个新的对象,然后将函数分配给同一个变量。所以第一条语句并不是必须的(也不是一个好习惯),然后将对象(包含一些属性)分配给缩放对象的原型,而不是向其添加属性(someFunction)。
尝试这样定义构造函数:
function zoomin(){
// this is your constructor
}
zoomin.prototype.someFunction = function(){
// this is your method.
}
var zm = new zoomin();
zm.someFunction();
查看其他答案,以更清洁的方式来组织这一点。 这个答案只是试图解决“构造函数中的”jQuerying打破'这个'的概念。
甲功能对象(例如zoomin
)必须与new
调用充当构造(构造只是功能,没有什么特别的不new
)。也就是说,如果在jQuery中使用zoomin
作为回调函数,那么this
将是一个特定的(但是任意的)对象,它可能不是新的对象实例。这可能会导致jQuery打破构造函数的错觉;然而,它没有,因为构造函数没有被new
调用,因此就像一个“正常函数”。
如果使用new fnObject
然后this
(该fnOjbect函数内)将总是是一个新的 “fnObject” 实例。还有没办法让jQuery改变这一点,即使它真的很努力,真的很难。
另外,zoomin = new Object
为100%无用的,因为下一行只是分配一个新的值(构造函数对象),以zoomin
:-)
编码愉快。
看来你有这个答案的另一个问题:http://*.com/questions/5852560/applying-oop-with-jquery。 – 2011-05-07 17:50:46
每当你使用'new Object()'时,上帝就会杀死一个名叫Brendan Eich的人。 – sdleihssirhc 2011-05-07 17:52:21
你的代码中没有任何与jQuery相关的东西。发布一个完整的(但最小的)例子,包括jQuery代码。 – interjay 2011-05-07 17:56:27