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

时间:2014-07-07 22:03:20

标签: javascript

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

据W3Schools说:http://www.w3schools.com/js/js_numbers.asp enter image description here 同样来自http://www.w3schools.com/js/js_datatypes.asp enter image description here

2 个答案:

答案 0 :(得分:6)

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

var name = 'John Doe';
var email = new String('john@example.com');

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

var name = 'John Doe'; // This is a primitive.
var email = 'john@example.com'; // This is an other primitive.

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

var to = name + ' <' + email + '>';

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

var index = email.indexOf('@');

由于转换为对象是自动发生的,因此您不必担心这一点。将变量声明为基元,JavaScript会在需要时将其转换为对象。

答案 1 :(得分:2)

将String,Number和Boolean声明为对象导致:

  1. 性能缓慢:通过new关键字创建对象总是代价高昂,导致执行速度慢,因为它在返回对象实例之前设置了很多属性并执行了底层活动。有关更多详细信息,请查看以下链接,了解有关新关键字执行的每项操 https://zeekat.nl/articles/constructors-considered-mildly-confusing.html

  2. 讨厌的副作用:当你将字符串,数字和布尔值声明为对象时,你可能会在尝试比较时面临真正的问题。 例如:

    <head>