<bdo id='NvBjA'></bdo><ul id='NvBjA'></ul>

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

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

  • <tfoot id='NvBjA'></tfoot>
      <legend id='NvBjA'><style id='NvBjA'><dir id='NvBjA'><q id='NvBjA'></q></dir></style></legend>

        javascript中this关键字详解

        在JavaScript中,this关键字用来引用当前函数的执行上下文。它可以用来引用当前正在执行的对象,这使得在函数内部可以访问该对象的属性和方法。

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

                <tfoot id='W3rky'></tfoot>

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

                  <tbody id='W3rky'></tbody>
                  <legend id='W3rky'><style id='W3rky'><dir id='W3rky'><q id='W3rky'></q></dir></style></legend>

                • JavaScript中this关键字详解

                  在JavaScript中,this关键字用来引用当前函数的执行上下文。它可以用来引用当前正在执行的对象,这使得在函数内部可以访问该对象的属性和方法。

                  1. this的值

                  this的值取决于它被使用的上下文。

                  1.1 全局上下文

                  在全局上下文中,this指向全局对象。在浏览器中,这个对象就是window对象。

                  console.log(this === window) // true
                  

                  1.2 函数上下文

                  在函数内部,this的值可以是多种不同的值,具体取决于函数被调用的方式。

                  1.2.1 函数作为普通函数调用

                  当函数作为普通函数调用时,this指向全局对象。

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

                  1.2.2 函数作为对象的方法调用

                  当函数作为对象的方法调用时,this指向该对象。

                  var obj = {
                    foo: function() {
                      console.log(this === obj)
                    }
                  }
                  
                  obj.foo() // true
                  

                  1.2.3 函数作为构造函数调用

                  当函数作为构造函数调用时,this指向新创建的对象。

                  function Foo() {
                    this.bar = 'baz'
                  }
                  
                  var obj = new Foo()
                  
                  console.log(obj.bar) // baz
                  

                  1.2.4 函数使用apply、call或bind调用

                  使用applycallbind函数调用时,this可以被指定为任何一个对象。

                  function foo() {
                    console.log(this.name)
                  }
                  
                  var obj1 = { name: 'object 1' }
                  var obj2 = { name: 'object 2' }
                  
                  foo.apply(obj1) // object 1
                  foo.call(obj2)  // object 2
                  foo.bind(obj1)() // object 1
                  

                  1.3 箭头函数中的this

                  在箭头函数中,this是在创建函数时确定的,而不是在调用函数的时候确定的。它是函数作用域内部的一个不可变值。

                  var obj = {
                    foo: () => {
                      console.log(this === obj)
                    }
                  }
                  
                  obj.foo() // false
                  

                  2. 使用this的常见问题

                  this的值通常会被认为是难以理解和预测的,这是由于其值不仅仅是由其上下文决定的,还会受到很多其他因素的影响。以下是使用this时常见的问题。

                  2.1 混乱的上下文

                  当函数执行的上下文发生变化时,this的值也会发生变化。在使用this时,我们需要非常小心,以确保它的值始终是我们所期望的值。

                  var obj = {
                    foo: function() {
                      console.log(this === obj)
                    }
                  }
                  
                  var bar = obj.foo
                  
                  bar() // false
                  

                  2.2 使用箭头函数时没有正确地绑定this

                  在使用箭头函数时,我们需要非常小心,以确保它的上下文与我们所期望的一样。由于箭头函数没有自己的上下文,所以如果在箭头函数中使用了this,它将引用其外部上下文的this。这可能会导致意外的行为。

                  var obj = {
                    foo: () => {
                      console.log(this === obj)
                    }
                  }
                  
                  obj.foo() // false
                  

                  总结

                  this是JavaScript中一个非常重要的关键字。它确定了函数被调用时的上下文,从而使函数能够引用适当的对象。在理解了this的基本工作原理之后,我们可以更轻松地在JavaScript中编写复杂的代码。

                  示例1

                  var a = {
                    value: 0,
                    increment: function() {
                      this.value++
                      console.log(this.value)
                    }
                  }
                  
                  var b = {
                    value: 0,
                    increment: a.increment
                  }
                  
                  a.increment() // 1
                  b.increment() // 1
                  

                  a.increment中,this指向aa.value被递增并输出1。而在b.increment中,this指向b,但它仍然调用了a.increment,这意味着a.value也被递增,输出1

                  示例2

                  function Counter() {
                    this.count = 0
                  
                    setInterval(function() {
                      this.count++
                      console.log(this.count)
                    }, 1000)
                  }
                  
                  var counter = new Counter()
                  

                  在这个示例中,setInterval函数中的函数被作为普通函数使用,因此它的this指向全局对象。为了与对象实例保持一致,我们需要将this绑定到Counter函数的实例上。

                  function Counter() {
                    this.count = 0
                  
                    setInterval(function() {
                      this.count++
                      console.log(this.count)
                    }.bind(this), 1000)
                  }
                  
                  var counter = new Counter()
                  
                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  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编写贪吃蛇游戏之前,需要掌握以下的前置知识:
                  <i id='jAXWD'><tr id='jAXWD'><dt id='jAXWD'><q id='jAXWD'><span id='jAXWD'><b id='jAXWD'><form id='jAXWD'><ins id='jAXWD'></ins><ul id='jAXWD'></ul><sub id='jAXWD'></sub></form><legend id='jAXWD'></legend><bdo id='jAXWD'><pre id='jAXWD'><center id='jAXWD'></center></pre></bdo></b><th id='jAXWD'></th></span></q></dt></tr></i><div id='jAXWD'><tfoot id='jAXWD'></tfoot><dl id='jAXWD'><fieldset id='jAXWD'></fieldset></dl></div>
                    • <legend id='jAXWD'><style id='jAXWD'><dir id='jAXWD'><q id='jAXWD'></q></dir></style></legend>

                      <tfoot id='jAXWD'></tfoot>

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

                        <tbody id='jAXWD'></tbody>
                            <bdo id='jAXWD'></bdo><ul id='jAXWD'></ul>