快捷导航

关于js中对象字面量的this指向问题

function F(){
    this.i = 123;
}

F.prototype.prop = {
constructor:F,
a:{b:this.i}
}
var f = new F();
console.log(f.prop.a.b);
为什么this指向window,怎么可以让this指向构造函数中,获取到123.

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

js中this的指向与上下文相关,直白来说即作用域,通常来讲就是代码段的调用者环境。很显然给出的代码存在两个作用域,全局的window,函数级别的作用域F
换句话来说,在给出的代码片段中,仅有F构造函数块内的this是指向F类的实例,其他则指向全局
所以你可以这样做,构造一个作用域(目的在于指定调用者)
functionF(){this.i=123}F.prototype={a:function(){returnthis.i}}varf=newF()console.log(f.i)//123console.log(f.a())//123
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP