• javascript函数调用上下文this


    1. 普通函数调用:  f();
      1. ecmascript3和非严格ecmascript5中this为全局对象,   ecmascript5严格模式下this为undefined
      2. 普通函数调用通常不关心this,   不过可以用它判断是否处于严格模式
        1 var strict = (function() { return !this; }());
    2. 方法调用: o.m();
      1. m中的this为调用对象o
      2. 方法返回this可构造链式调用
      3. this没有作用域限制,   嵌套函数不会从调用它的函数中继承this,   如果嵌套函数作为方法调用,   其this为调用它的对象.   如果作为普通函数调用,  遵守第一种调用方式
      4. 嵌套函数如果需要访问外部函数的this,   需要将this保存在外部函数变量中
         1 var o = {
         2   m: function()
         3   {
         4     var self = this;
         5     console.log(this === o);  // true
         6     f();
         7     
         8     function f()
         9     {
        10       console.log(this === o); // false
        11       console.log(self === o); // true
        12     } // end f()
        13     
        14   } // end m()
        15 };
    3. 构造函数:  new f()
      1. 没有形参的构造函数调用可以省略圆括号如:   new  Object;
      2. 构造函数调用创建一个新的空对象,   这个对象继承自构造函数的prototype属性.   构造函数初始化这个心创建的对象并将它作为this.
      3. new o.m();  其中m的this不是o
      4. 构造函数通常不使用return,  如果构造函数使用return显式返回一个对象,   调用表达式结果就是这个对象.   如果return没有指定返回值或者返回一个原始值,  将忽略此返回值并使用初始化后的对象作为调用结果.
    4. 间接调用: apply() call() 通过参数设置this
  • 相关阅读:
    hdu 2.2.4 Wolf and Rabbit 解题心得
    概率(经典问题) 解题心得
    POJ2250:Compromise(LCS) 解题心得
    POJ 3903 Stock Exchange 解题心得
    2015 HUAS Summer Trainning #5~E
    2015 HUAS Summer Trainning #5~A
    015 HUAS Summer Contest#3~A
    2015 HUAS Summer Trainning #4~B
    2015 HUAS Summer Contest#3~E
    2015 HUAS Summer Contest#3~B
  • 原文地址:https://www.cnblogs.com/qiudeqing/p/3403468.html
Copyright © 2020-2023  润新知