Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与';这';在jquery代码块内使用时_Javascript_Jquery_Oop_Dom - Fatal编程技术网

Javascript 与';这';在jquery代码块内使用时

Javascript 与';这';在jquery代码块内使用时,javascript,jquery,oop,dom,Javascript,Jquery,Oop,Dom,我想在jquery代码块中使用调用对象的值,但“this”映射到jquery对象,而不是eh caller!请问如何解决这个问题 // class myClass = function (){ // member object this._localVars = { _elementClass:'.elem-class', _dots:null, _dotStatus:null }; // member funct

我想在jquery代码块中使用调用对象的值,但“this”映射到jquery对象,而不是eh caller!请问如何解决这个问题

// class
myClass = function (){
    // member object
    this._localVars = {
        _elementClass:'.elem-class',
        _dots:null,
        _dotStatus:null
    };

    // member function
    this.func1 = function() {
        $(this._elementClass).each(function(_index, _element){
            // this._localVars._dots[_index] = _element; ... this line throws an error 'this._localVars' is undefined ... as 'this' is html element here and not an object of the calling class
        });
    };
};
请建议如何在jquery代码块中使用“this”来引用类的变量/对象,而不是HTML/jquery


谢谢

尝试将
对象保存到局部变量中

    var myObject = this;
    $(this._elementClass).each(function(_index, _element){
        myObject._localVars._dots[_index] = _element;
    });
您可以使用设置所需的
的值

将函数作为第一个参数传递,将当前的
this
作为第二个参数传递

myClass = function (){
    this._localVars = {
        _elementClass:'.elem-class',
        _dots:[],
        _dotStatus:null
    };
    this.func1 = function() {
        $(this._localVars._elementClass).each( $.proxy(function(_index, _element) {
             this._localVars._dots[_index] = _element;
        }, this));
    };
};

var cl = new myClass();

cl.func1();

console.log(cl._localVars._dots);

不过,如果我使用'var myObject=this;'它不会创建对象的本地副本吗?然后无论我做什么操作,都会影响该本地副本而不是全局集合?@Mandeep否,它只会创建对旧对象的引用。不是C,谢谢你,兄弟。。。这正是我想要的。非常感谢。