<legend id='sVkwW'><style id='sVkwW'><dir id='sVkwW'><q id='sVkwW'></q></dir></style></legend>
  • <tfoot id='sVkwW'></tfoot>
        <bdo id='sVkwW'></bdo><ul id='sVkwW'></ul>

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

        <i id='sVkwW'><tr id='sVkwW'><dt id='sVkwW'><q id='sVkwW'><span id='sVkwW'><b id='sVkwW'><form id='sVkwW'><ins id='sVkwW'></ins><ul id='sVkwW'></ul><sub id='sVkwW'></sub></form><legend id='sVkwW'></legend><bdo id='sVkwW'><pre id='sVkwW'><center id='sVkwW'></center></pre></bdo></b><th id='sVkwW'></th></span></q></dt></tr></i><div id='sVkwW'><tfoot id='sVkwW'></tfoot><dl id='sVkwW'><fieldset id='sVkwW'></fieldset></dl></div>
      1. JS 中在严格模式下 this 的指向问题

        时间:2023-12-08
          <bdo id='MAxAJ'></bdo><ul id='MAxAJ'></ul>

        • <tfoot id='MAxAJ'></tfoot>

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

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

                  JS 中的 this 表示函数执行时所在的上下文对象,在不同的情况下,this 指向的对象是不同的,这是 JS 中一个比较重要,也比较复杂的概念。

                  在严格模式下,this 指向的对象与非严格模式下不同。下面我们通过两个示例来详细讲解在严格模式下 this 的指向问题。

                  示例一

                  'use strict';
                  
                  function showThis() {
                    console.log(`in showThis, this is ${this}`);
                  }
                  
                  showThis(); // TypeError: this is undefined
                  

                  在函数 showThis 内部,由于是在严格模式下执行,this 并没有指向全局对象,而是 undefined,因为严格模式下,函数内部的 this 不能默认指向全局对象。

                  示例二

                  'use strict';
                  
                  const person = {
                    firstName: '张',
                    lastName: '三',
                    fullName: function() {
                      console.log(`当前对象中的 this: ${this}`);
                      function getName() {
                        console.log(`函数中的 this: ${this}`);
                        return this.firstName + this.lastName;
                      }
                      return getName();
                    }
                  }
                  
                  person.fullName(); // 函数中的 this: undefined
                                     // Uncaught TypeError: Cannot read property 'firstName' of undefined
                  

                  在函数 fullName 中调用函数 getName,其中 getName 函数是一个独立函数,它的执行环境并不是在 person 对象下。由于在严格模式下,独立函数内部的 this 不会指向全局对象,所以此时的 this 是 undefined,导致后面的 firstName 和 lastName 操作都会报错。

                  为了解决这个问题,我们可以使用 call、apply 或 bind 方法明确指定 this 的指向,或者使用箭头函数来绑定上下文。

                  'use strict';
                  
                  const person = {
                    firstName: '张',
                    lastName: '三',
                    fullName: function() {
                      const _this = this;
                      function getName() {
                        console.log(`函数中的 this: ${this}`);
                        return _this.firstName + _this.lastName;
                      }
                      return getName.call(_this);
                    }
                  }
                  
                  person.fullName(); // 函数中的 this: { firstName: '张', lastName: '三', fullName: [Function: fullName] }
                                     // 张三
                  

                  以上就是关于在严格模式下 this 的指向问题的详细说明,如果熟悉了这个概念,就可以更好地理解 JS 中的许多复杂问题了。

                  上一篇:JavaScript实现Flash炫光波动特效 下一篇:跟我学习javascript的严格模式

                  相关文章

                  • <bdo id='D8WXL'></bdo><ul id='D8WXL'></ul>
                1. <legend id='D8WXL'><style id='D8WXL'><dir id='D8WXL'><q id='D8WXL'></q></dir></style></legend>

                    <i id='D8WXL'><tr id='D8WXL'><dt id='D8WXL'><q id='D8WXL'><span id='D8WXL'><b id='D8WXL'><form id='D8WXL'><ins id='D8WXL'></ins><ul id='D8WXL'></ul><sub id='D8WXL'></sub></form><legend id='D8WXL'></legend><bdo id='D8WXL'><pre id='D8WXL'><center id='D8WXL'></center></pre></bdo></b><th id='D8WXL'></th></span></q></dt></tr></i><div id='D8WXL'><tfoot id='D8WXL'></tfoot><dl id='D8WXL'><fieldset id='D8WXL'></fieldset></dl></div>
                    <tfoot id='D8WXL'></tfoot>
                  1. <small id='D8WXL'></small><noframes id='D8WXL'>