首页 新闻 会员 周边 捐助

关于javascript对象的问题

0
[已解决问题] 解决于 2016-11-03 20:39

一切皆对象,这是我学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(){},那为啥会类型会不同呢?

所以一切皆对象中,这个一切有些费解。

流炎飞雪的主页 流炎飞雪 | 初学一级 | 园豆:6
提问于:2016-11-03 17:03
< >
分享
最佳答案
0

var str2 = "string"这是基本类型,提示出来的alert(typeof str2)肯定是字符串。。。。str2.constructor,这个是用法是对象.属性     发生了基本包装(暗地里new了一下),所以在.属性后,指向的肯定都是他们的构造函数.....

奖励园豆:5
ankou杨 | 菜鸟二级 |园豆:207 | 2016-11-03 19:08

很感谢您的回答,我刚刚百度了一下,之前还真是没听过基本包装一说,这下真是明白了。

流炎飞雪 | 园豆:6 (初学一级) | 2016-11-03 20:39
其他回答(2)
0

都是对象并不是说他都是[object object]

 

吴瑞祥 | 园豆:29449 (高人七级) | 2016-11-03 17:14

感谢您的回答!

支持(0) 反对(0) 流炎飞雪 | 园豆:6 (初学一级) | 2016-11-03 20:21
0

一个JavaScript对象由键和值组成。 当一个给定键的值被设置为一个字符串、布尔值、数字、数组或对象时,我们把这个键称为属性。 当把键设置为函数时,我们把它叫做方法。这一切都是对象,没有了对象也就没有了万物!

好来污影后 | 园豆:287 (菜鸟二级) | 2016-11-03 19:07

你这么一讲倒是让我想起来window对象。

var str = "string";

相当于

window.str = "string";

所以称为window下的str属性。所以alert的结果就是string,而不是object。

哈哈,感谢您的回答。

支持(0) 反对(0) 流炎飞雪 | 园豆:6 (初学一级) | 2016-11-03 20:30

是的 当你打印 str="string"时 回过头来 想想 str是什么 你就明白了

支持(0) 反对(0) 好来污影后 | 园豆:287 (菜鸟二级) | 2016-11-03 20:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册