zoukankan      html  css  js  c++  java
  • 怎样理解this

    JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: this/self 总是返回一个对象.

    至于返回的这个对象到底是什么, 其实就是我们需要去发掘的. 

    1. this的指向是动态的, 下面在test()中返回的this.name, 这里的this指代的是具体的环境, 如果在obj1里面则返回"李雷", 如果在obj2里面则返回"韩梅梅", 如果在全局作用域内, 那就会在全局作用域下去找name这个属性, 因此返回"李强".

    function test(){
        return this.name;
    };
    
    var obj1 = {
        name: "李雷",
        getName: test
    };
    
    var obj2 = {
        name: "韩梅梅",
        getName: test
    };
    
    var name = "李强";
    
    obj1.getName(); // "李雷"
    obj2.getName(); // "韩梅梅"
    test(); // "李强"

    2. 构造函数中的this会在new时将待实例的空对象赋值给this, 这个操作实际上是将this指向了一个空对象, 用于从构造函数中拷贝属性和方法

    function Person(name){
        this.name = name;
    }
    
    var lilei = new Person("李雷");
    lilei.name; // "李雷"

    3. 在网络编程中, this指代的是所在的元素节点, 比如下面例子中的this就是指代的input这个元素节点. 注意这个DOM节点也是一个对象, this指代了他自身

    <body>
      <input type="text" id="inputNumber" onblur="test(this, 10)">
      <script>
        function test(el, num){
          if (el.value>num) alert("大了");
          if (el.value<num) alert("小了");
          if (el.value==num) alert("正确!");
        }
      </script>
    </body>

    理解this其实只需要理解一句话就好: this指代的是当前属性或方法所在的对象, 它是动态的.

  • 相关阅读:
    python编码基础知识
    python编码问题
    python中文乱码
    mysql sql灵活运用
    MySQL函数讲解(MySQL函数大全)
    python:UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xef in position xxx: ordinal not in range(128)
    sql replace into 与 insert into
    微信布局
    盘点六大在中国复制失败的O2O案例
    字符串问题(一)
  • 原文地址:https://www.cnblogs.com/aisowe/p/11654971.html
Copyright © 2011-2022 走看看