我学习JavaScript和想测试下面的代码:的Javascript:函数的变量知名度
var name1 = "global";
function userobject(){
this.name1 = "local";
}
function func() {
alert(name1);
}
var myobject=new userobject();
func();
func.call(myobject);
在我的理解,在第一次调用FUNC按键,警报(“全局”)应被调用, 但在第二次调用func.call(myobject)时,应调用alert(“local”),但实际上在两种情况下均显示“全局”文本。 我想,当执行时,当解释器看到变量名称时,它试图在本地识别它,如果找不到它,它会在父文件中搜索它。 在我的例子中,我认为由于func.call(myobject),父类是myobject,函数应该使用它的name1变量,它被定义为“local”。
请正确指出我在理解这件事上错了什么地方?
'this.name1'不是本地变量,而是'myobject'的*属性*。你不能像变量一样访问它。 – Bergi 2013-03-24 13:00:20