JavaScript 中的函数、字符串和数字都是对象吗?
JavaScript 将几乎所有内容都声明为对象的声誉可能会令人费解,尤其是对于初学者。虽然对象及其方法和属性确实发挥着重要作用,但字符串、数字和函数等基元的行为却有所不同。
基元值与对象
在 JavaScript 中,原始值是不可变的,无法通过点表示法访问。然而,JavaScript 提供了包装对象(String、Number 和 Boolean),它们为基元赋予类似对象的方法和属性。
包装对象
包装对象是在后面创建的访问图元属性时的场景。例如,在代码中:
var s = "foo"; var sub = s.substring(1, 2);
JavaScript 默默地创建一个 String 对象,调用 substring() 方法,然后丢弃该对象。 sub 变量现在包含基元字符串“o”。
虽然看起来您可以将属性分配给基元,但这些分配实际上是在立即丢弃的包装器对象上执行的。因此,检索此类属性会产生未定义的结果,如以下示例所示:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
函数作为对象
与基元不同,函数是继承的完整对象来自对象。它们可以具有属性,如以下代码所示:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
总之,原语在 JavaScript 中并不固有地具有对象特征。然而,包装对象提供了类似对象行为的外观,而函数是可以与属性和方法交互的真正对象。这种区别对于理解 JavaScript 的类型系统和做出明智的编码决策至关重要。
以上是函数、字符串和数字实际上表现得像 JavaScript 中的对象吗?的详细内容。更多信息请关注PHP中文网其他相关文章!