函数赋值时this执行环境的改变原因(后续) 本帖最后由 cxl444905143 于 2014-12-01 14:22:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 按照js权威指南里的那句话,赋值表达式的值是右操作数的值,(object.getName = object.getName),而右边的 object.getName 只是属性访问,没有进行函数调用,所以没有绑定this(函数调用时添加变量对象,绑定this),所以赋值表达式的值是这个没有绑定 this 的函数对象。是不是这样? 不要想的那么复杂!你说的不对!是这样的,赋值表达式是有返回值的!而这个返回值就是等号后面那个的内容‘可能是字符串,数字,对象,函数.....’当执行object.getName = object.getName的时候,虽然对object.getName本身没有任何影响,但是这个赋值表达式返回一个函数表达式:function(){ return this.name;}并且直接挂到了window对象上!所以后面的还用说么.....,就相当于这样了(function(){ return this.name;})() 不对,绑定到this了,只不过现在的this指向的是windowvar name = "The Window"; var object = { name : "My Object", getName: function(){ console.log(this); return this.name; } }; (object.getName = object.getName)() 已经知道怎么回事儿了,看这篇文章 http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html 已经知道怎么回事儿了,看这篇文章 http://www.cnblogs.com/TomXu/archive/2012/01/17/2310479.html发的地址不错,学习了,又涨知识了。 谢谢这个问题,结合众大神讲解,再看下 《javascript语言精粹》 算是明白了…… 在html中写js代码 JS调用MSCOMM32.OCX 为什么网页右下角显示网页上有错误 动态菜单问题 mvc dropdownlist 取当前值 全选按钮的实现 ext 新手提问? JS图片平滑特效 发两个小程序让诸位大哥帮我解决一下可以吗? 在线页面编辑系统,大家有资料或者程序吗? fason(阿信)/ possible_Y(这个问题有点儿难度!) 近来拿多点分,谢谢你们拉! 在线等,网页如何判断客户端是安卓还是IOS系统 html怎样获取当前页面js脚本里的变量值
是这样的,赋值表达式是有返回值的!而这个返回值就是等号后面那个的内容‘可能是字符串,数字,对象,函数.....’
当执行object.getName = object.getName的时候,虽然对object.getName本身没有任何影响,但是这个赋值表达式返回一个函数表达式:function(){
return this.name;
}并且直接挂到了window对象上!所以后面的还用说么.....,就相当于这样了(function(){
return this.name;
})()
var object = {
name : "My Object",
getName: function(){
console.log(this);
return this.name;
}
};
(object.getName = object.getName)()
发的地址不错,学习了,又涨知识了。