在JavaScript中一切皆对象,就是将所有的数据都看成是对象。于是,就有了字符串和字符串对象的问题。首先看看创建字符串的两种写法:

 

var str1='hello itsource.cn';

var str2=new String('hello itsource.cn');

 

很多人对于这两种创建字符串的方式都感到很迷茫,不知道该写哪一种,也不知道有什么区别。接下来把我研究的结果给大家整理出来。

 

第一,先看一下共同点

1. 两种方式都能成功创建字符串,也能够拿来使用或输出。

 

 

2. 两种方式创建的结果还是相等的。

 

 

3. 两种方式创建的字符串都可以使用属性和方法

 

 

第二,看一下不同的地方

虽然两种方式都能创建出字符串,值也是相等的,并且都能够使用属性和方法。 但是也有一些不同的地方。

 

1. 两种字符串的类型不相同

 

从两个图中可以看出, str1的类型是 string,即普通字符串。 而 str2的类型为object,是一个对象类型。 普通字符串是一个基本类型的数据,存储在内存的栈里面,而对象是一个引用类型的数据,存储在内存堆里面。所以两种方式创建出的字符串数据类型不相同,内存的存储位置也不相同。

之前看到的两个字符串相等使用的是值等于(==),而不是全等于(===),如果是全等于则两个字符串不相等,因为它们的类型不相同。

要理解清楚为什么str2是对象类型,就必须了解JS的new关键词,这里不详细解释啦。

 

2. 字符串对象可以使用自定义属性和方法

运行结果:

从结果可以看出,str1是基本类型的字符串,不能自定义属性和方法。 而 str2是一个字符串对象,可以使用自定义的属性和方法。

 

JS中基本字符串和字符串对象的区别我就给大家写到这里了,只是说明一下主要的区别,以便于大家根据自己的情况使用,内部运行原理就不在这里详细写了。


©著作权归作者所有:来自51CTO博客作者qq6048445b266f9的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. 【正则】整理详细JavaScript正则表达式入门,看这篇就够了!附常用的
  2. 换肤案例以及选项卡
  3. msqly
  4. 4.07字符串与数组的一些常用方法
  5. (lintcode)第8题旋转字符串
  6. (lintcode)第13题字符串的查找
  7. (lintcode)第29题交叉字符串
  8. 关于Go语言,你可能会讨厌的五件事
  9. js基础知识:字符串数组方法及留言本实例

随机推荐

  1. android学习-动画(基本的四种动画)
  2. 设置showAsAction="always"无效的问题
  3. 超级简单的应用虚拟化软件 [RemoteApp To
  4. Windows环境下Android(安卓)NDK环境搭建
  5. Android开发——布局详解(上)
  6. [Android] Web Console: Uncaught TypeEr
  7. Android(安卓)实现自定义的卫星式菜单(弧
  8. android与PC,C#与Java 利用protobuf 进行
  9. Android模拟器RAM修改方法 - 尤其是3.0
  10. Android(安卓)SDK Manager无法显示可供下