js中String()、new String()探究

JavaScript028

js中String()、new String()探究,第1张

js中的基础类型有6种

5种基础类型:undefined null String Number Boolean

1中引用类型:Object

基础类型的string有如下定义方式:

这三种方式有什么区别吗?

str1、str2是普通的字符串,str3是个对象?什么原因呢?

用 typeof 验证一下

用 instanceof 验证一下

可以看出 str3 确确实实是个String对象了

再来看个有意思的事,如果给String加上自定义方法和属性呢?

虽然 str1、str2不是对象,但可以用String上的方法和属性

再看,如果直接给str1、str2定义方法和属性呢?

可以看出str1、str2是不能定义自己的方法和属性的,而str3可以

这就能看出 js 的神奇部分了,什么原理呢?

来看包装对象和原始资料类型

上面看到的str1、str2即为原始资料类型,str3为包装对象,通过typeof可以看出

但str1、str2不能自己定义属性和方法,却可以用String的属性和方法

总结一下

1、第一种和第二种方法定义出来的是原始资料类型,并储存于栈中,并向包装对象(new ..())借来方法和属性.

2、第三种是 包装对象,栈中储存堆指针,堆中储存内容。

关于堆、栈、指针的问题,咱们继续学习

这两个可以说除了字符串长度相同,没有任何共同点:

js区分大小写,所以他们两个不是一回事。

String 是构造函数,string是变量的一个类型

typeof String 是function, typeof string 是 string

String('xxx')  返回的是一个字符串。String有属性和方法,而string没有。