Javascript 获取can';t读取属性';任何';在严格模式下编写脚本时出现类型错误
当使用Javascript 获取can';t读取属性';任何';在严格模式下编写脚本时出现类型错误,javascript,this,strict-mode,Javascript,This,Strict Mode,当使用严格模式时我得到类型错误以使用此访问var “严格使用”; var bar=“全局”; 函数foo(){ console.log(this.bar); } 变量obj1={ 条:“obj1”, 福:福 }; 变量obj2={ 条形图:“obj2” }; foo(); obj1.foo(); foo.call(obj2); 新foo()在严格模式下,当您调用函数而不设置其this时,this是未定义的,而不是对全局对象的引用。这是严格模式的最大区别之一。因此,如果要使用对全局对象的引用调用
严格模式时
我得到类型错误
以使用此
访问var
“严格使用”;
var bar=“全局”;
函数foo(){
console.log(this.bar);
}
变量obj1={
条:“obj1”,
福:福
};
变量obj2={
条形图:“obj2”
};
foo();
obj1.foo();
foo.call(obj2);
新foo()代码>在严格模式下,当您调用函数而不设置其this
时,this
是未定义的
,而不是对全局对象的引用。这是严格模式的最大区别之一。因此,如果要使用对全局对象的引用调用foo
,您可以:
在全局范围内,执行foo.call(this)代码>(因为全局范围内的此
是对全局对象的引用),或
在浏览器上,执行foo.call(窗口)代码>(因为窗口
是全局对象上的一个属性,它用来指向自身——其他环境也可能有其他类似的全局对象)
下面是#1的一个例子:
“严格使用”;
var bar=“全局”;
函数foo(){
console.log(this.bar);
}
变量obj1={
条:“obj1”,
福:福
};
变量obj2={
条形图:“obj2”
};
foo.叫(这个);// 在严格模式下,当您调用函数而不进行任何设置其this
时,this
是未定义的
,而不是对全局对象的引用。这是严格模式的最大区别之一。因此,如果要使用对全局对象的引用调用foo
,您可以:
在全局范围内,执行foo.call(this)代码>(因为全局范围内的此
是对全局对象的引用),或
在浏览器上,执行foo.call(窗口)代码>(因为窗口
是全局对象上的一个属性,它用来指向自身——其他环境也可能有其他类似的全局对象)
下面是#1的一个例子:
“严格使用”;
var bar=“全局”;
函数foo(){
console.log(this.bar);
}
变量obj1={
条:“obj1”,
福:福
};
变量obj2={
条形图:“obj2”
};
foo.叫(这个);//
“this”指函数foo的范围。
您可以键入其中的范围暗示为全局范围的窗口的条形图。也可以键入window.bar
function foo() {
console.log(window.bar);
console.log(bar);
}
“this”指函数foo的范围。
您可以键入其中的范围暗示为全局范围的窗口的条形图。也可以键入window.bar
function foo() {
console.log(window.bar);
console.log(bar);
}
可能重复的可能重复的“'this'指的是函数foo的范围”不,它不是。一点也不。”“this”指的是函数foo的范围“不,它不是。一点也不。