创建对象
对象字面量
创建对象最基本的方法是使用对象字面量语法。对象字面量由括在花括号中的逗号分隔的属性 name:value 对列表组成。例如,以下代码创建一个包含客户信息的对象:
var customer={
name:"John Doe",
address:"1311 Maple Drive",
city:"New York",
state:"NY",
zipcode:12345,
phonenumber:"212-555-1234"
};
指定属性的顺序无关紧要。事实上,DScript 按属性名称的字母顺序存储属性。这种组织方式使 DScript 在后续访问属性时更加高效。
New 运算符
创建对象更常见的方法是使用 New 运算符和对象构造函数。例如,以下代码使用名为 Object 的内置对象构造函数创建一个空对象:
参见 new。
参见 Object。
创建对象后,可以按如下方式添加属性
customer.name="John Doe";
customer.address="1311 Maple Drive";
customer.city="New York";
customer.state="NY";
customer.zipcode=12345;
customer.phonenumber="212-555-1234";
需要注意的是,只需为其赋值即可创建新属性。在上面的示例中,对象 customer 最初没有属性。但是,执行以下语句
既创建了新属性又为其赋了值。如果属性已存在,上述语句只是修改属性值。
对象构造函数
对象构造函数是使用 new 运算符调用的函数,用于设置默认属性值。在上面的示例中,使用名为 Object 的内置对象构造函数创建了一个空对象。创建对象更常见的方法是定义并使用自己的构造函数。以下构造函数接受客户名称作为参数并将其赋给相应的属性。该构造函数还为所有其他属性设置默认值。
Customer(name):={
this.name=name;
this.address="";
this.city="";
this.state="";
this.zipcode=0;
this.phonenumber="";
}
注意对象构造函数使用关键字 this 来引用正在构造的对象。DScript 允许使用简写符号来简化定义。每当引用属性但未给出对象名称时,对象被假定为 this,即,
.name 与 this.name 相同。因此,可以将 Customer 对象构造函数定义为 Customer(name):={ .name=name; .address=""; .city=""; .state=""; .zipcode=0; .phonenumber=""; }
另请注意,构造函数不返回对象;它只是初始化对象。运算符 New 负责创建对象并设置 this 的值。
参见 new。
参见 this。
使用上面的构造函数,可以按如下方式创建客户对象:
通常,设计构造函数时会将所有必需的属性放在构造函数的参数列表中。在示例中,只有客户名称是必需的。所有其他属性都有默认值。
复制对象
当将对象复制到变量中时,DScript 会创建一个全新的对象。例如,以下代码创建两个名为 ob1 和 obj2 的对象:
如果修改 obj2 的内容,不会影响 obj1。这与某些 JavaScript 实现略有不同,在那些实现中将对象复制到变量只是复制指向原始对象的指针。与列表一样,DScript 按值而非按引用复制和比较对象。这是因为 DScript 将列表和对象视为基本数据类型,就像数字和文本字符串一样。
嵌套对象
对象可以包含其他对象作为属性值。例如,以下是一个 Order 对象的构造函数,其中包含 Customer 对象作为属性: