js中this指向问题?
城堡下的诡洞
城堡下的诡洞 2017-03-22 09:24:15
0
2
932

这两个代码的this指向让我懵逼了

var length = 10; function fn() { console.log(this.length); } var obj = { a: fn, length: 5, method: function (f) { //console.log(this===obj);//true f(); //console.log(arguments) //arguments[0]();// //arguments[0].call(this);// //arguments[0].call(obj);// } }; obj.method(obj.a);
var name = 'out'; var obj = { name: 'in', prop: { name: 'inside', getName: function () { return this.name; } } }; //console.log(obj.prop.getName());// var test = obj.prop.getName;// console.log(test());//


城堡下的诡洞
城堡下的诡洞

Antworte allen (2)
数据分析师

js中this指向问题?-PHP中文网问答-js中this指向问题?-PHP中文网问答

围观一下哦,学习一下。

    迷茫

    1.this指向不看定义的时候在哪,而是看调用的时候指向。obj.method(obj.a)。那么调用的就是obj,而obj在全局作用域里面,所以this指向window或undefined(严格模式)。

    2.调用的是test。test在全局作用域,所以name也是全局下的name。如果一定要修改这个指向,可以在这行:

    var test = obj.prop.getName.bind(obj); //或者 var test = obj.prop.getName.bind(obj.prop);

    再调用的时候就是in或者inside了

      Neueste Downloads
      Mehr>
      Web-Effekte
      Quellcode der Website
      Website-Materialien
      Frontend-Vorlage
      Über uns Haftungsausschluss Sitemap
      Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!