据说所有都是javascript中的对象。但我发现像null,undefined,true,'foo'这样的原始值不是对象。这是真的吗?
javascript中的对象是什么?javascript中的非对象是什么?实际上原始价值是多少?
如果我理解以下是真的吗?
var str1 = "hello world!"; // primitive value
var str2 = String("hello world!");// object value
答案 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被视为对象。他们可以分配 属性(某些类型的指定属性不是持久的),和 它们具有物体的所有特征。