jquery / javascript中self的用途是什么?

时间:2015-07-24 07:57:11

标签: javascript jquery

在javascript中,他们使用的是:

  • var self=this;
  • var jquery_element= $(html_element);
  • self.jquery_element=jquery_elemnet

为什么我们在javascript中使用这些。我从OpenStack horizon

获得了此代码

5 个答案:

答案 0 :(得分:6)

var self=this;对于嵌套函数非常有用,而this可能会变得模棱两可(如果您不知道this是javascript关键字)。 self可用于仍然更改现在从内部函数引用this的{​​{1}}。

this只是提供了一种简单的方法来引用jQuery元素,而不必不断地重新创建它(也提供了性能优势,例如解释here)。

var jquery_element= $(html_element);似乎是特定于该代码的,我不太确定它的作用。

答案 1 :(得分:3)

要回答您的直接问题,this是javascript 关键字,其值将根据其位置而变化。通过将其值写入self之类的常规变量,即使self本身已更改,您也可以保留this在范围内的值。

答案 2 :(得分:3)

用于在其他范围内查看,以便在一个范围内使用this,在其他范围内。 修改

 var parentFunction = function(){
       this.msg = "hello world";
       var parentScopeSelf = this;
       var innerFunction = function(){
            var innerFunctionScopeSelf = this;
            console.log(this.msg);// undefined (because this now is   innerFunction scope, and does not have property msg)
            console.log(innerFunctionScopeSelf.msg);// undefined (because innerFunctionScopeSelf is "this" from  innerFunction scope, and does not have property msg)
            console.log(parentScopeSelf.msg);// hello world (because parentScopeSelf is "this" from parentFunction scope)
       }
    }

答案 3 :(得分:1)

当您具有嵌套函数时,将this分配给另一个变量很有用。例如:

jQuery(function($) {
    $('#myInput').on('keyup', function() {
        var $this = $(this); // assign the jQuery's element to $this
        $('div.errors').each(function() {
            console.log($(this)); // outputs jQuery's object div.errors
            console.log($this); // the input is still available in the nested function
        });
    });
});

作为建议,如果变量存储jQuery元素,请在其前面添加$。因此,它应该是

var $jquery_element = $(html_element);

答案 4 :(得分:1)

var jquery_element= $(html_element);

是使html元素成为一个jquery对象,可以与jquery的所有方法一起使用。

html_element.fadeOut();< - 将无效

$(html_element).fadeOut();< - 将会工作