为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

sumTre 2018-12-25 21:18:34
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 回答

?
pardon110

TA贡献1038条经验 获得超227个赞

js中this的指向与上下文相关,直白来说即作用域,通常来讲就是代码段的调用者环境。很显然给出的代码存在两个作用域,全局的window,函数级别的作用域F

换句话来说,在给出的代码片段中,仅有F构造函数块内的this是指向F类的实例,其他则指向全局

所以你可以这样做,构造一个作用域(目的在于指定调用者)

function F(){    
    this.i = 123
}
F.prototype = { 
    a: function(){ 
        return this.i
        }
    }
var f = new F()

console.log(f.i)  // 123
console.log(f.a()) // 123


查看完整回答
反对 回复 2018-12-26
  • 1 回答
  • 0 关注
  • 1795 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信