闭关修行中......
JavaScript语言精粹说 这是一个设计缺陷
@eyesofkids 的答案已经很完善了,建议采纳。
=========================================== 下面是老答案 ===========================================
再来补充一种方式,通过 call 改变 this的方向,return function(){} 中还可以用 this。
var name = "aa"; var object = { name : "bb", getNameFunc : function(){ return (function(){ return this.name; }).call(this); } }; alert(object.getNameFunc());
this是在运行时绑定的。
this
你这里调用对象的方法,最后返回一个函数,返回的函数是在全局作用域执行的,并且没有其他对象调用返回的函数,也没有使用new,call,apply,bind调用返回的函数。this在非严格模式下就指向window/global,在严格模式下就指向undefined。
new
call
apply
bind
window/global
undefined
要么把对象本地化(放在外部的函数内)要么把对象(this)传到返回的函数内
JavaScript语言精粹说 这是一个设计缺陷
@eyesofkids 的答案已经很完善了,建议采纳。
再来补充一种方式,通过 call 改变 this的方向,return function(){} 中还可以用 this。
this
是在运行时绑定的。你这里调用对象的方法,最后返回一个函数,返回的函数是在全局作用域执行的,并且没有其他对象调用返回的函数,也没有使用
new
,call
,apply
,bind
调用返回的函数。this
在非严格模式下就指向window/global
,在严格模式下就指向undefined
。要么把对象本地化(放在外部的函数内)要么把对象(this)传到返回的函数内