WithCoderWithCoderWithCoder

Javascript创建对象的几种方式

    在Javascript中,可以通过对象直接量、关键字new和(ECMAScript 5中的)Object.create()方法来创建对象。下面就三种创建方法进行简单介绍。

    1. 对象直接量

    在Javascript中创建对象最简单的方式就是使用对象直接量。对象直接量是由若干“名/值”对组成的映表,名/值对中间用冒号(:)分隔,多个名/值对之间用逗号分隔,整个映射表用花括号({})括起来。

    属性名可以是Javascript标识符也可以是字符串直接量(包含空字符串)。

    在ECMAScript 5中,保留字可以用作不带引号的属性名。然而对之前的版本来说,使用保留字作为属性名必须使用引号括起来。在ECMAScript 5中,对象直接量的最后一个属性后的逗号将忽略。

    属性值可以是任意类型的Javascript表达式,表达式的值(可以是原始值也可以是对象值)就是整个属性的值。

    举例如下:

    <script>
        // 创建带有两个属性的直接量对象
        var people = {
            name: "neil",
            age: 200
        };
    </script>

    注意:

    对象直接量是一个表达式,这个表达式的每次运算都将创建并初始化一个新的对象。每次计算对象直接量的时候,也都会计算它的每个属性的值。也就是说,如果在一个重复调用的函数中的循环体内使用了对象直接量,它将创建多个新对象,并且每次创建的对象的属性值有可能不同。

    2. 关键字new

    关键字new运算符创建并初始化一个新对象。在关键字new后跟随一个函数调用,这个函数称为构造函数,构造函数用以初始化一个新创建的对象。

    在Javascript中,语言核心中的原始类型都包含内置的构造函数,如:   

    <script>
        // 创建一个空对象,和对象直接量{}一样
        var obj = new Object();

        // 创建一个空数组
        var arr = new Array();
    </script>

    除了内置构造函数,在Javascript中最常见的是使用自定义的构造函数来初始化新的对象。

    3. Object.create()

    Object.create()是ECMAScript 5中定义的方法,它会创建一个新对象,其中第一个参数是这个对象的原型。另外,此方法提供第二个可选的参数,用以对创建的对象的属性进行进一步描述。

    Object.create()是一个静态函数,而不是提供给某个对象调用的方法。使用它很简单,只需要传入所需的原型对象即可,如:   

    <script>
        // 创建一个新对象obj,它继承了属性name和age
        var obj = Object.create({
            name: "neil",
            age: 100
        });
    </script>

    另外,也可以通过传入参数null,来创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何东西,甚至不包括基础方法。

    <script>
        // 创建一个新对象obj,它不继承任何属性和方法
        var obj = Object.create(null);
    </script>

    如果想创建一个普通的空对象(比如通过{}或new Object()创建的对象),则需要传入Object.prototype:   

    <script>
        // 创建一个新的普通空对象obj,它和对象直接量{}和new Object()一样
        var obj = Object.create(Object.prototype);
    </script>

    可以通过任意原型对象创建新对象(换句话说,可以使任意对象可继承),返回的新对象继承了参数原型对象的属性。

欢迎分享交流,转载请注明出处:WithCoder » Javascript创建对象的几种方式