一切皆对象,这是我学javascript后始终费解的问题。
var obj = new Object();
alert(typeof obj);
//object 这个很好理解,Object对象是javascript的顶层对象,包含所有对象的属性和方法。
并且所有的对象都是可以使用其属性和方法的。
var str = new String("string");
alert(typeof str);
//object 这个也能理解,String对象是javascript内置对象,当然就是对象了。
上面是我的理解,如果没有错误的话,问题就在下面。
var str2 = "string";
alert(typeof str2);
//string 那这个为啥这里不是object呢?
然后来验证一下他们的构造函数
alert(str.constructor);
alert(str2.constructor);
//结果却是构造函数是一样的,都为function String(){},那为啥会类型会不同呢?
所以一切皆对象中,这个一切有些费解。
var str2 = "string"这是基本类型,提示出来的alert(typeof str2)肯定是字符串。。。。str2.constructor,这个是用法是对象.属性 发生了基本包装(暗地里new了一下),所以在.属性后,指向的肯定都是他们的构造函数.....
很感谢您的回答,我刚刚百度了一下,之前还真是没听过基本包装一说,这下真是明白了。
都是对象并不是说他都是[object object]
感谢您的回答!
一个JavaScript对象由键和值组成。 当一个给定键的值被设置为一个字符串、布尔值、数字、数组或对象时,我们把这个键称为属性。 当把键设置为函数时,我们把它叫做方法。这一切都是对象,没有了对象也就没有了万物!
你这么一讲倒是让我想起来window对象。
var str = "string";
相当于
window.str = "string";
所以称为window下的str属性。所以alert的结果就是string,而不是object。
哈哈,感谢您的回答。
是的 当你打印 str="string"时 回过头来 想想 str是什么 你就明白了