zoukankan      html  css  js  c++  java
  • javascript中对this的理解

    this在不同场景的作用,如下例子

    //1.函数预编译过程中 this --> window
    //AO  this: window
    function test() {
      console.log(this)
    }
    test()  //window
    
    //2.全局作用域里 this --> window //GO this: window console.log(this) //window
    //3.call/apply可以改变函数运行时this指向 var obj = {} function Person(name, age) {   this.name = name   this.age = age } Person.call(obj, 'lyj', 18) // Person.apply(obj, ['lyj', 18]) console.log(obj) //{name: "lyj", age: 18}
    //4.obj.func(), func()里面的this指向obj var obj = {   a: function() {     console.log(this.name)   },   name: 'abc' } obj.a() //abc

    看以下例子

    var name = '222'
    var a = {
      name: '111',
      say: function() {
        console.log(this.name)
      }
    }
    var fun = a.say
    fun()    //222  没有被谁调用, this指向window
    a.say()  //111  被a调用, this指向a
    
    var b = {
      name: '333',
      say: function(fun) {
        fun()  //没有被谁调用, fun里面的this指向window
      }
    }
    b.say(a.say)  //222   
    b.say = a.say
    b.say()  //333  被b调用, this指向b

     看很多面试中的题目

    var foo = {
        baz: function() {
            console.log(this)
        }
    };
    
    foo.baz(); // foo
    
    (foo.baz)(); // also foo
    (foo.baz = bar.baz)();  // 这是一个全局对象
    (foo.baz, bar.baz)();    // 也是全局对象
    (foo || bar.baz)();       // 也是全局对象
    
    //解释一下:因为 = , || 都是赋值运算,而赋值语句的返回值就是赋值的值,所以后面三个转换后变成函数对象,即(function(){ console.log(this)})(), 而前面两个还是引用类型的function

    end !!!

  • 相关阅读:
    xcode构建webdriverAgent时报错Messaging unqualified id的解决办法
    ubuntu18.0安装RabbitMQ
    python中*的用法
    Jenkins构建项目
    Jenkins安装与配置
    git_仓库
    六、 Shell数组应用
    五、 Shell函数应用
    三、 Shell流程控制
    二、 Shell变量定义
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13826281.html
Copyright © 2011-2022 走看看