Javascript中this的指向问题
我是小白,今天写了一个小函数
Array.prototype.a = function(){
var k = 0;
for(x in this)
{
k+=this[x];
}
console.log(k);
}
var t = [1,2,3,7]
t.a()
结果打印出来是
13function (){
var k = 0;
for(x in this){
k+=this[x];
}
console.log(k);
}
请问为什么this会指向函数本身呢?
追问:我为了知道this的内容,还专门打印this的内容,显示为【1,2,3,7】
this的用法 javascript闭包 JavaScript
萝莉的内裤
9 years, 7 months ago
Answers
这里的this应该是Array的对象,也就是 t。
由于你使用 for in 循环遍历对象的属性,所以原型链上的所有属性都将被访问。也即你定义 function a 会被遍历。
所以this[a]返回结果就是function,由于在操作符 + ,会自动tostring, 也就是你看到输出结果。
另外对于array,最好不要使用 for in 循环遍历。
下面代码应该是你想要的结果:
Array.prototype.a = function (){
var k = 0;
for (var i =0, c; c = this[i++];) {
k += c;
}
console.log(k);
}
var t = [1,2,3,7]
t.a()
我是大河河
answered 9 years, 7 months ago