• 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"
  • 相关阅读:
    线段树刷题版
    HDU 1011 Starship Troopers 树形+背包dp
    POJ1741 Tree 树分治模板
    POJ3744 Scout YYF I 概率DP+矩阵快速幂
    【bzoj1875】【JZYZOJ1354】[SDOI2009]HH去散步 矩阵快速幂 点边转换
    BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂
    POJ 2778 DNA Sequence AC自动机+矩阵快速幂
    POJ2222 Keywords Search AC自动机模板
    Python 命名空间
    svn下目录说明
  • 原文地址:https://www.cnblogs.com/marton/p/10134673.html
Copyright © 2020-2023  润新知