私はJavascriptを学んでいて、次のコードをテストしたいと思っています。
var name1 = "global";
function userobject(){
this.name1 = "local";
}
function func() {
alert(name1);
}
var myobject=new userobject();
func();
func.call(myobject);
私の理解では、最初にfuncを呼び出すと、alert( "global")が呼び出されますが、2番目の呼び出しであるfunc.call(myobject)では、alert( "local")が呼び出されます。
ただし、実際にはどちらの場合も「グローバル」テキストが表示されます。実行時にインタプリタが変数名を見ると、ローカルでそれを識別しようとし、そこで見つからない場合は親で検索すると思いました。私の場合、func.call(myobject)が原因で、親はmyobjectであり、関数は「ローカル」として定義されているname1変数を使用する必要があると思いました。
私がこのことを理解するのが間違っているところを正しく教えてください。