什么时候建议在Javascript中将String,Number和Boolean声明为Objects

Dav*_*ave 6 javascript

什么时候Javascript数据类型应该声明为对象?它们会降低执行速度,并产生令人讨厌的副作用,为什么这可能呢?

根据W3Schools:http://www.w3schools.com/js/js_numbers.asp 在此输入图像描述 也来自http://www.w3schools.com/js/js_datatypes.asp 在此输入图像描述

Ger*_*osi 6

数字,字符串和布尔值可以是基元和对象.例如,您可以创建一个原始字符串,并且可以创建另一个作为对象的字符串:

var name = 'John Doe';
var email = new String('john@example.com');
Run Code Online (Sandbox Code Playgroud)

不同之处在于对象(在本例中email)具有许多有用的字符串操作方法.因为对象需要比基元更多的内存.因此建议仅创建原始值并仅在需要时进行对象转换.JavaScript会自动执行此操作.例如:

var name = 'John Doe'; // This is a primitive.
var email = 'john@example.com'; // This is an other primitive.
Run Code Online (Sandbox Code Playgroud)

两者的串联是另一个原语:

var to = name + ' <' + email + '>';
Run Code Online (Sandbox Code Playgroud)

但是,当在基元上调用方法时,临时email变为对象:

var index = email.indexOf('@');
Run Code Online (Sandbox Code Playgroud)

因为转换为对象是自动发生的,所以您不必担心.将变量声明为基元,JavaScript会在需要时将其转换为对象.