我正在学习 Javascript 并想测试以下代码:
var name1 = "global";
function userobject(){
this.name1 = "local";
}
function func() {
alert(name1);
}
var myobject=new userobject();
func();
func.call(myobject);
据我了解,在第一次调用 func 时,应该调用 alert("global"),但在第二次调用 func.call(myobject) 时,应该调用 alert("local"),
但实际上在这两种情况下都会显示“全局”文本。我想,在执行时,当解释器看到变量名时,它会尝试在本地识别它,如果在那里找不到它,它将在父级中搜索它。在我的情况下,我认为由于 func.call(myobject),父对象是 myobject,并且函数应该使用它的 name1 变量,该变量被定义为“本地”。
请正确地理解我在哪里错了?