zoukankan      html  css  js  c++  java
  • JS-- this

    this简介

      this是JS中很重要的一个关键字,不是变量,也不是属性名,它总是指向一个对象;

      而这个对象是在运行时基于函数的执行环境动态绑定的;

      此外JS不允许为this赋值。

    this指向分类

      作为普通函数调用

      作为构造函数调用

      作为对象的方法调用

      call和apply调用

      作为普通函数调用

        当函数以普通函数的方式调用时,函数内的this在非严格模式下指向window,在严格模式下指向undefined

    var name = “global”;
    var person = {
        name: "tom",
        sayName: function () {
            console.log(this.name);
        }        
    }
    
    var printName = person.sayName;
    printName(); //global

      作为构造函数调用

        当函数通过new调用时,即以构造函数的方式调用,函数会返回一个对象,函数内部的this指向这个返回的对象

    function Person (name) {
        this.name = name;  
       console.log(this);   }

    var person = new Persosn("tom"); //{name: "tom"}

      作为对象的方法调用

        当函数作为某个对象的属性时,函数内部的this指向这个对象

    var person = {
        name: "tom",
        sayName: function () {
            console.log(this.name);
        }        
    }

    persosn.sayName(); //"tom"

      call和apply调用

        通过call,apply的方式调用函数,可以动态的改变传入函数中的this指向

    var sayName = function () {
      console.log(this.name);
    }

    var person1 = {
      name: "tom"
    }
    var person2 = {
      name: "lily"
    }

    sayName.call(person1); //"tom"
    sayName.call(person2); //"lily"
  • 相关阅读:
    我的第一个项目--总结
    c++中的继承
    指针带来的意想不到的功能紊乱
    一个很难发现的内存泄漏
    我的第一个项目--迭代开发总结
    内存访问冲突问题(非法内存访问)
    Debug Assertion Failed mfc140ud.dll
    javaweb 开发总结五-----servlet开发(一)
    javaweb学习总结四---http协议
    Tomcat服务器学习和使用二·
  • 原文地址:https://www.cnblogs.com/marton/p/10134673.html
Copyright © 2011-2022 走看看