javascript中有哪些对象?

时间:2014-01-31 06:23:41

标签: javascript

据说所有都是javascript中的对象。但我发现像null,undefined,true,'foo'这样的原始值不是对象。这是真的吗?

javascript中的对象是什么?javascript中的非对象是什么?实际上原始价值是多少?

如果我理解以下是真的吗?

var str1 = "hello world!"; // primitive value
var str2 = String("hello world!");// object value

2 个答案:

答案 0 :(得分:4)

JavaScript有两类值

  • Primitives - number,string,boolean,undefined,null

  • Objects - 所有其他值,包括数组和函数

基元和对象之间的主要区别在于基元是不可变的,而自定义/ adhoc属性不能分配给基元值。


数字,字符串和布尔基元类型具有相应的对象类型:Number,String和Boolean。但是,对于undefined或null,没有相应的Object类型 - 这些值是孤独的单例。

关联类型包含[prototype],当使用隐式转换时,它允许基元以“行为”为对象,因为可以在它们上调用该方法。例如,"foo".trim()调用String.prototype.trim函数。

用作构造函数时,Number / String / Boolean函数也充当转换到适用的原始值。

"foo"                       // is string (primitive)
String("foo")               // is string (primitive)
new String("foo")           // is String (object)
"foo" === String("foo")     // -> true
"foo" === new String("foo") // -> false

通常应该使用原始类型来避免混淆。

答案 1 :(得分:1)

It is said that all are the objects in javascript. But I found that the primitive values like null, undefined, true, 'foo' are not objects.

如果您阅读documentation,已经提供了

  

在JavaScript中,几乎所有东西都是一个对象。所有原始类型   除了null和undefined被视为对象。他们可以分配   属性(某些类型的指定属性不是持久的),和   它们具有物体的所有特征。

List of data types in Javascript