码迷,mamicode.com
首页 > Web开发 > 详细

js 在嵌套函数中this关键字引用head对象

时间:2015-04-01 11:19:32      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

var myObject = {
  func1: function() {
    console.log(this); // myObject
    var func2  = function() {
       console.log(this); // window, 从此处开始,this都是window对象了
       var func3 = function() {
         console.log(this); // window, head
       }();
    }();
  }
}

myObject.func1();

  

var foo = {
  fun: function(bar) {
    console.log(this) // foo
    bar(); // window
  }
}

foo.fun(function() {console.log(this)})

  

在ES3中当this值得宿主函数被封装在另一个函数的内部或在另一个函数的上下文中被调用时,this值将永远是对head对象的引用

this在ES5中是固定的

解决this的几个方法

var myObject =  {
  myProp: ‘hah‘,
  myMeth: function() {
    var that = this; // myMeth作用域内,保存this引用(也就是myObject)
    var helper = function() { // 子函数
      console.log(that.myProp); // hah
      console.log(this); // window
    }();
  }
}
myObject.myMeth();
var myObject = {};

var myFunction = function(p1, p2) {
  // 调用函数的时候,通过call()将this指向myObject
  this.foo = p1;
  this.bar = p2;
  console.log(this);
};

myFunction.call(myObject, ‘foo‘, ‘bar‘);

console.log(myObject); // Object {foo = ‘foo‘, bar = ‘bar‘}

  

js 在嵌套函数中this关键字引用head对象

标签:

原文地址:http://www.cnblogs.com/daqianduan/p/4383215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!