zoukankan      html  css  js  c++  java
  • 深层对象方法中的this

    this指向的对象是运行时所在的对象,而不是表面代码中所处的对象

    以下三种情况,this指向全局对象

    情况一 (obj.foo = obj.foo)()   // window

    情况二 (false || obj.foo)()    // window

    情况三 (1 , obj.foo)()          // window

     1 var a = {
     2   p: 'Hello',
     3   b: {
     4     m: function() {
     5       console.log(this.p);
     6     }
     7   }
     8 };
     9 
    10 a.b.m() // undefined

     对象中的方法,本质上是函数。函数被单独创建在内存当中,对象属性(方法名)的属性描述对象的value属性保存了函数的地址。实际执行如下代码:

     1 var b = {
     2   m: function() {
     3    console.log(this.p);
     4   }
     5 };
     6 
     7 var a = {
     8   p: 'Hello',
     9   b: b
    10 };
    11 
    12 (a.b).m() // undefined,等同于 b.m()

    此时this指向b,b中没有变量p。

    一: 把方法赋值给变量,通过变量调用函数相当于在全局环境下调用函数,this指向全局环境

     

     二:把对象赋值给变量,在对象环境下调用函数,this指向对象

  • 相关阅读:
    java 问题记录
    java 构造方法
    java 接口
    java 抽象类
    java 封装
    java 面向对象
    java 集合小练习 超市库存管理系统
    linux常用指令
    个人简历表格
    html5 表格文档常用指令
  • 原文地址:https://www.cnblogs.com/flyover/p/14244960.html
Copyright © 2011-2022 走看看