猿问

关于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.

sumTre
浏览 1796回答 1
1回答

pardon110

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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答