关于js中this
发布网友
发布时间:2022-04-07 05:53
我来回答
共3个回答
热心网友
时间:2022-04-07 07:22
问题1.
这是因为alert()是比较简陋的,他只能输出字符,这导致了他并不适合我们在开发时将其作为变量输出工具。
而因为只支持输出字符,所以当你要alert()的内容不是字符串时,他会使用toString()方法强制的转化成字符串。
默认情况下,每个对象都会从Object上继承到toString()方法,如果这个方法没有被这个对象自身或者更接近的上层原型上的同名方法覆盖(遮蔽),则调用该对象的toString()方法时会返回"[object type]"
所以你在alert()这个变量a的时候,他会返回object Object,第二个object是指他是从Object对象中获取的toString()方法。
所以一般调试需要输出变量,并且看变量具体内容的话,建议使用console.log(),而不是alert()
问题2.
这是this指向的问题,当一个函数是作为对象的属性存在,当其被调用时,this会指向被绑定的对象,如非如此的话,this会指向全局对象,也就是Window。
你这里很明显,你var sum的这个操作应该不是在一个对象方法内部进行的吧?所以this会指向Window对象。而Window对象本身拥有toString()方法,所以会返回object Window
热心网友
时间:2022-04-07 08:40
1.js内置对象toString()的字符串 [object Object]
alert(obj) 默认会调用toString()方法
而和你定义的类没有关系,比如:
var A={};
alert(A);// [object Object]
2.你能告诉我你使用的浏览器吗,我在IE10,chrome,firefox都是object
热心网友
时间:2022-04-07 10:15
alert一个对象都是object