Я учусь 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) необходимо вызвать предупреждение («local»),
, но на самом деле в обоих случаях отображается «глобальный» текст. Я думал, что при выполнении, когда интерпретатор видит имя переменной, он пытается идентифицировать его в нем локально, и если он не может найти его там, он будет искать его в родительском. В моем случае я думал, что из-за func.call (myobject) родительский объект myobject, и функция должна использовать переменную name1, которая определяется как «локальная».
Пожалуйста, правильно, где я ошибаюсь в понимании этого?
'this.name1' не является локальной переменной, а является * свойством * myobject'. Вы не можете получить к нему доступ, как переменную. – Bergi