前端小知识点:普通字符串和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中的参数传递——值传递引用传递