前端小知识点:普通字符串和new String有什么区别

Posted 前端小歌谣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端小知识点:普通字符串和new String有什么区别相关的知识,希望对你有一定的参考价值。

目录

一、其实不仅字符串

二、那么到底为什么?

三、代码案例

四、运行结果


一、其实不仅字符串

var str = 'abc';

typeof str ===> string //他不是对象,可以有方法或者属性

var num = 123;  //他不是对象,可以有方法或者属性

typeof num ===> number  //他不是对象,可以有方法或者属性

当然还有很有很多...

我们知道,String,Number,在JS中是基本类型

二、那么到底为什么?

引言:基本类型是存储在栈(stack)内存中的,而引用类型,对象(object)是存储在堆中的。但是为什么栈内存的可以也可以有方法和属性呢?

console.log(str.indexOf === String.prototype.indexOf) //true

str 又 不属于String 却拥有 String 的方法?????

因为:这是JS中的设计。

原始资料类型的方法与属性是"借"来的

所以原始资料类型是可以向 new String() 或者 new Number() 借来所有的方法。但是自己本身却没有属性和方法。

三、代码案例

var str1 = '123';
var str2 = new String('123');


console.log( typeof str1 ); //string
console.log( typeof str2 ); //object


console.log( str1.slice(-1) );
console.log( str2.slice(-1) );


console.log(str1.indexOf === String.prototype.indexOf);


var num1 = 123;
var num2 = new Number(123);

四、运行结果

 

以上是关于前端小知识点:普通字符串和new String有什么区别的主要内容,如果未能解决你的问题,请参考以下文章

Java数组小知识和UML知识 java中的参数传递——值传递引用传递

前端小知识点:作者为什么设计原型

前端小知识点:作者为什么设计原型

javascript 容易忽略的小知识点 new到底做了什么?

万树IT:web前端小技巧,你都掌握了吗?

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