var name = '张三'; var age = 17; var obj = { name:'李四', objAge:this.age, fn: function(){ console.log(this.name,this.age) } } obj.objAge //17 obj.fn(); //张三 undefined
例2:
1 2 3 4 5
var str = '你好'; function (){ console.log(this.str) } show() // 你好
比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ;
让我们来用 call()、apply()、bind() 都是用来重定义 this 这个对象的,看看是什么效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
var name = '张三'; var age = 17; var obj = { name:'李四', objAge:this.age, fn: function(){ console.log(this.name,this.age) } } var obj2 = { name:'李白', age:100 } obj.fn().call(obj2); // 李白 obj.fn().apply(obj2); // 李白 obj.fn().bind(obj2)(); // 李白