<small id='GOKkt'></small><noframes id='GOKkt'>

<i id='GOKkt'><tr id='GOKkt'><dt id='GOKkt'><q id='GOKkt'><span id='GOKkt'><b id='GOKkt'><form id='GOKkt'><ins id='GOKkt'></ins><ul id='GOKkt'></ul><sub id='GOKkt'></sub></form><legend id='GOKkt'></legend><bdo id='GOKkt'><pre id='GOKkt'><center id='GOKkt'></center></pre></bdo></b><th id='GOKkt'></th></span></q></dt></tr></i><div id='GOKkt'><tfoot id='GOKkt'></tfoot><dl id='GOKkt'><fieldset id='GOKkt'></fieldset></dl></div>
    • <bdo id='GOKkt'></bdo><ul id='GOKkt'></ul>

    1. <tfoot id='GOKkt'></tfoot>
      1. <legend id='GOKkt'><style id='GOKkt'><dir id='GOKkt'><q id='GOKkt'></q></dir></style></legend>

        JavaScript中this的全面解析及常见实例

        在JavaScript中,this关键字代表当前函数执行的上下文环境。它是一个非常重要的概念,经常用来解决程序中的“上下文”问题。但由于this的指向不固定,所以很多开发者会因为混淆了this的指向而导致程序运行出错。
          • <bdo id='bCRwG'></bdo><ul id='bCRwG'></ul>
          • <small id='bCRwG'></small><noframes id='bCRwG'>

              <tbody id='bCRwG'></tbody>

                  <legend id='bCRwG'><style id='bCRwG'><dir id='bCRwG'><q id='bCRwG'></q></dir></style></legend>
                  <i id='bCRwG'><tr id='bCRwG'><dt id='bCRwG'><q id='bCRwG'><span id='bCRwG'><b id='bCRwG'><form id='bCRwG'><ins id='bCRwG'></ins><ul id='bCRwG'></ul><sub id='bCRwG'></sub></form><legend id='bCRwG'></legend><bdo id='bCRwG'><pre id='bCRwG'><center id='bCRwG'></center></pre></bdo></b><th id='bCRwG'></th></span></q></dt></tr></i><div id='bCRwG'><tfoot id='bCRwG'></tfoot><dl id='bCRwG'><fieldset id='bCRwG'></fieldset></dl></div>
                1. <tfoot id='bCRwG'></tfoot>
                2. JavaScript中this的全面解析及常见实例

                  什么是this

                  在JavaScript中,this关键字代表当前函数执行的上下文环境。它是一个非常重要的概念,经常用来解决程序中的“上下文”问题。但由于this的指向不固定,所以很多开发者会因为混淆了this的指向而导致程序运行出错。

                  this关键字的指向是在函数被调用时动态绑定的,具体的指向既取决于调用函数的方式,也取决于函数执行时所处的上下文环境。下面让我们一起来看看this的常见用例及其指向规则。

                  五种常见的this指向

                  在JavaScript中,this关键字的指向一般有五种常见的情形。

                  情形一:全局环境中的this指向全局对象

                  当一个函数在全局环境中被调用时,this关键字会指向全局变量对象window

                  function test() {
                    console.log(this === window); // true
                  }
                  test();
                  

                  在Node.js环境中,global对象被作为一个全局对象使用。所以在Node.js环境中,以下代码片段将输出true

                  function test() {
                    console.log(this === global); // true
                  }
                  test();
                  

                  情形二:作为对象方法调用时的this指向该对象

                  当一个函数作为一个对象的方法被调用时,this关键字会指向该对象。

                  var obj = {
                    name: "Jack",
                    sayName: function() {
                      console.log(this.name);
                    }
                  };
                  obj.sayName(); // Jack
                  

                  情形三:用call和apply方法调用时指定this的指向

                  当我们调用callapply方法时,可以传入一个参数来指定函数执行时的this关键字的指向。callapply方法的不同之处在于它们对参数的处理方式。call方法接受一个参数列表,而apply方法接受一个以数组形式表示的参数列表。

                  function test() {
                    console.log(this.name);
                  }
                  
                  var obj1 = {
                    name: "Jack"
                  };
                  
                  var obj2 = {
                    name: "Tom"
                  };
                  
                  test.call(obj1); // Jack
                  test.call(obj2); // Tom
                  

                  情形四:作为构造函数调用时创建新对象

                  当一个函数作为构造函数被调用时,通过new运算符创建一个新的对象,并给this关键字指向该新对象。

                  function Person(name) {
                    this.name = name;
                  }
                  
                  var obj1 = new Person("Jack");
                  var obj2 = new Person("Tom");
                  
                  console.log(obj1.name); // Jack
                  console.log(obj2.name); // Tom
                  

                  情形五:箭头函数中的this指向

                  在ES6新特性中引入的箭头函数中,this关键字的指向基于其外部(即定义时)的上下文,在箭头函数内部无法改变其指向。因此,箭头函数中的this指向与外部的上下文相同。

                  var obj = {
                    num: 2,
                    test: function() {
                      var arr = [1, 2, 3];
                  
                      var multiple = arr.map((function(val) {
                        return val * this.num;
                      }).bind(this));
                  
                      console.log(multiple); // [2, 4, 6]
                    }
                  };
                  
                  obj.test();
                  

                  在上面的例子中,我们使用了箭头函数的语法写了一个map方法的回调函数,在函数中使用了this.num来访问obj对象中的num属性。由于箭头函数是在定义时就绑定了this的指向,所以它可以正确地访问到obj对象中的属性。

                  总结

                  在JavaScript中,this关键字的指向一般有五种常见的情形。正确区分这五种情形非常重要,可以让我们更好地解决程序中的上下文问题。

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  treetable.js没有checked做联动。于是自己基于treetable开发的一个小功能,希望能和大家一起交流一下。 1. 在当前HTML文档checked监听函数中增加以下代码 //联动 table.on('checkbox(quan_list)', function(obj){ //console.log(obj); //当前id var id = obj.
                  当使用Javascript的attachEvent来绑定事件时,我们希望能够给事件处理函数传递一些参数,但是attachEvent本身并不支持传递参数。下面介绍两种解决方法。
                  KnockoutJS是一款流行的JavaScript库,针对一个web应用程序的建立提供了比较好的基础架构。其中,表单的数据绑定功能是KnockoutJS最为常用的功能之一。本文将详细讲解KnockoutJS 3.x
                  下面是用javascript实现改善用户体验之alert提示效果的完整攻略。
                  在学习JavaScript编写贪吃蛇游戏之前,需要掌握以下的前置知识:

                  <legend id='3iUzK'><style id='3iUzK'><dir id='3iUzK'><q id='3iUzK'></q></dir></style></legend>
                3. <tfoot id='3iUzK'></tfoot>
                      <tbody id='3iUzK'></tbody>
                    <i id='3iUzK'><tr id='3iUzK'><dt id='3iUzK'><q id='3iUzK'><span id='3iUzK'><b id='3iUzK'><form id='3iUzK'><ins id='3iUzK'></ins><ul id='3iUzK'></ul><sub id='3iUzK'></sub></form><legend id='3iUzK'></legend><bdo id='3iUzK'><pre id='3iUzK'><center id='3iUzK'></center></pre></bdo></b><th id='3iUzK'></th></span></q></dt></tr></i><div id='3iUzK'><tfoot id='3iUzK'></tfoot><dl id='3iUzK'><fieldset id='3iUzK'></fieldset></dl></div>
                          <bdo id='3iUzK'></bdo><ul id='3iUzK'></ul>

                          <small id='3iUzK'></small><noframes id='3iUzK'>