jQuery的突破“这个”的构造?

我使用jQuery和创造一些OOP JavaScript功能。 的目的和它的构造具有以下结构:

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

希望这可以帮助。 干杯

你的代码是相当混乱。 要创建一个新的对象,然后同一个变量分配的功能。 所以先声明是没有必要的(而不是一个很好的做法),然后分配对象(某些属性)的zoomin对象的原型,而不是增加一个属性(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 )。 也就是说,如果zoomin用作jQuery的回调函数则this将是一个特别是(但任意的)对象,它可能不是一个新对象实例。 这可能给了jQuery的断构造的错觉; 然而,它没有,因为构造不与调用new因而就像一个“正常功能”。

如果使用new fnObject那么this (在fnOjbect函数内)将永远是一个新的“fnObject”实例,没有办法让jQuery来改变这一点,即使它试图真的,真的很难。

此外, zoomin = new Object是100%的无用的,因为下一行只是分配一个新的值(构造函数对象)来zoomin :-)

编码愉快。

分类:JavaScript的 时间:2015-03-16 人气:9
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.303 (s). 9 q(s)