为什么这个代码会抛出undefined?
function Obj() {
this.a = 12;
this.b = "a";
this.privilegedMethod = function () {
this.a++;
privateMethod();
};
function privateMethod() {
this.b = "foo";
console.log(this.b);
}
}
Run Code Online (Sandbox Code Playgroud)
调用如下所示的函数,在"严格模式"中抛出... undefined.
var a = new Obj();
console.log(a.privilegedMethod());
Run Code Online (Sandbox Code Playgroud)
thisJavaScript中的值是根据函数的调用方式设置的.这是"背景".
当你a.privilegedMethod(),你正在呼唤privilegedMethod()的"背景" a.在里面,那个方法,this将是a.
当你打电话时privateMethod(),没有"背景".在严格模式之外,this将是window,但在严格模式下它是undefined.
试试这个:privateMethod.call(this);.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |