JavaScript的“Object”函数是用来做什么的?

3

Object函数在JavaScript中是用来创建一个对象的。

例如,当我们执行Object(1)时会发生什么呢?它会将数字1转换为一个Number对象。

5个回答

4

它强制将某些东西转换为对象。虽然我没有看到它被这种方式使用过。

var num = 1;
var obj = Object(num);
alert(typeof num); //displays "number"
alert(typeof obj): //displays "object"
alert(num + "," + obj); //displays "1,1"

创建一个空对象,以便在其上放置属性和方法的首选、更快捷的方式是使用 {}。有三种可能的方式来创建一个对象:

var emptyObj = {};
var emptyObj = new Object();
var emptyObj = new Object; // Object does not need an argument, so this is valid.

关于第三个例子,它是否“标准”并得到广泛支持? - Pacerier
1
@Pacerier:根据David Flanagan的《JavaScript权威指南》(http://oreilly.com/catalog/9780596101992),5.10.3节:“作为一个特例,仅适用于new运算符,JavaScript简化了语法,如果函数调用中没有参数,则允许省略括号”。 - Lekensteyn
1
@Pacerier:根据EXCMA 262规范的5.2.2节(以及5.2.2.1节),允许使用new Objectnew Object()。根据5.2.2节:“当Object作为new表达式的一部分被调用时,它是一个构造函数,可以创建一个对象。” 根据5.2.2.1节:“当没有参数或有一个参数值调用Object构造函数时,执行以下步骤:[...] 8. 返回obj。” 因此,行为是相同的。 - Lekensteyn

2

来自 Mozilla 开发者网站:

Object 构造函数为给定值创建一个对象包装器。如果该值是 null 或 undefined,将创建并返回一个空对象;否则,将返回一个与给定值对应类型的对象。

在非构造器上下文中调用时,Object 的行为相同。

因此,Object(1) 会产生一个行为类似于原始值 1 的对象,但支持对象特性,例如给属性分配值(Object(1).foo = 2 可以工作,(1).foo = 2 不行)。


1
var obj = Object("test");

创建一个字符串“text”,它与...相似。
var obj2 = "test";

注意obj2的类型是“String”,而obj1的类型是“Object”。
尝试这个:
 <script>
var obj = Object("test");
console.log(obj);
console.log(typeof(obj));
console.log(obj["0"]);

obj2 = "test";
console.log(obj2);
console.log(typeof(obj2));
console.log(obj2["0"]);

</script>


0

Object函数是一个构造函数,所有其他类型(如Array、String、Number)都继承它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接