Javascript 基元与对象:澄清概念
尽管普遍认为“Javascript 中几乎所有内容都是对象”,但并非所有内容语言中的实体遵循这个定义。基元和对象之间的区别需要澄清。
基元
与对象相反,基元是以其基本形式存在的不可变值。它们缺少方法和属性,并包含以下数据类型:
对象包装器
原语有相应的对象包装器(字符串、数字、布尔值)提供方法和属性。然而,基元本身并不是对象。为了与基元的属性进行交互,Javascript 会隐式地为操作创建一个包装对象。
字符串示例
考虑下面的代码片段:
var s = "foo"; var sub = s.substring(1, 2); // sub is now the string "o"
Javascript 内部执行以下步骤:
尝试将属性分配给基元
为基元分配属性实际上是不可能的,因为任何此类属性都将与临时包装对象相关联,而不是与基元本身相关联:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
函数如下另一方面,对象
函数是能够继承的真正对象对象类。它们拥有属性并且可以像其他对象一样进行操作:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
总之,虽然基元可能看起来具有类似对象的行为,但它们与 Javascript 中的真实对象不同。对象包装器允许与原始值交互,但原始值保持不可变。然而,函数是 полноценные объекты,具有所有对象功能的完全成熟的对象。这种理解澄清了 Javascript 语言中原语和对象之间的关系。
以上是Javascript 基元实际上是对象吗?的详细内容。更多信息请关注PHP中文网其他相关文章!