var name = "The Window"; var object = {
name : "My Object", getNameFunc : function(){
return function(){
return this.name;
}; } }; alert(object.getNameFunc()());为什么结果是The Window ?谢谢
name : "My Object", getNameFunc : function(){
return function(){
return this.name;
}; } }; alert(object.getNameFunc()());为什么结果是The Window ?谢谢
类似
var ret = function() {
return this.name;
}
alert(ret());可以闭包实现你期望的结果
var name = "The Window";var object = {
name : "My Object",
getNameFunc : function(){
var self = this;
return function(){
return self.name;
}; }};alert(object.getNameFunc()());
好比这里是一个JAVA类,var name = "the window"是一个全局变量
object是一个声明在某方法中的一个对象,这样就好理解了吧?而this.name就是指这个类中的name而并非object里的name。如果要取object中的name,直接用object.name就可以了。个人见解,错误之处请高人执政!
function(){
return this.name;
};
这个函数开始,寻找属性name,不存在,则向其父对象作用域中寻找。仍然不存在,则再往父对象中寻找。此时的父对象为object,即object.name
这里主要要明白,JavaScript中,作用域是Scope Chain。是逐层往上的。
<script>
var name = "The Window";function a(){
return this.name;
}var object = {
name : "My Object",
getNameFunc : function(){ return a(); }};alert(object.getNameFunc());
</script>
这么写你再试试