【问题标题】:What does the JavaScript "Object" function do?JavaScript“对象”函数有什么作用?
【发布时间】:2011-04-19 14:20:47
【问题描述】:

JavaScript 中的Object 函数有什么作用?

例如,当我们执行Object(1) 时会发生什么?

【问题讨论】:

    标签: javascript function object


    【解决方案1】:

    它迫使某物成为一个对象。不过,我还没有看到它以这种方式使用。

    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: Per "JavaScript: The Definitive Guide", by David Flanagan, 5.10.3: “作为一种特殊情况,仅对于 new 运算符,JavaScript 通过允许在没有参数的情况下省略括号来简化语法函数调用”。
    • @Pacerier:EXCMA 262 specification 的第 5.2.2 节(和 5.2.2.1)允许 new Objectnew Object()。根据 5.2.2:“当 Object 作为新表达式的一部分被调用时,它是一个可以创建对象的构造函数。”。根据 5.2.2.1:“当 Object 构造函数在没有参数或只有一个参数值的情况下被调用时,将采取以下步骤:[..] 8. Return obj。”所以,行为是一样的。
    【解决方案2】:

    From the Mozilla developer site:

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

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

    所以Object(1) 生成的对象行为类似于原始值1,但支持对象功能,例如为属性赋值(Object(1).foo = 2 可以工作,(1).foo = 2 不行)。

    【讨论】:

      【解决方案3】:
      var obj = Object("test");
      

      创建一个字符串“文本”,它非常类似于

      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>
      

      【讨论】:

        【解决方案4】:

        【讨论】:

          【解决方案5】:

          Object函数是一个构造函数,所有其他类型(如数组、字符串、数字)都继承它。

          【讨论】:

            猜你喜欢
            • 2011-04-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-24
            • 1970-01-01
            • 2017-06-14
            • 1970-01-01
            • 2010-10-28
            相关资源
            最近更新 更多