说明
来自之前挑战里的 Bird
和 Dog
构造函数运行良好。但是,请注意,使用 Bird
构造函数创建的所有 Birds
都自动命名为Albert,颜色为蓝色,并有两条腿。但如果你想要不同的名称和颜色的鸟呢?可以手动更改每只鸟的属性,但这将是有很多步骤:
var swan = new Bird();
swan.name = "Carlos";
swan.color = "white";
假设你正在编写一个程序来跟踪鸟舍中数百甚至数千只不同的鸟类。创建所有鸟类需要很多时间,再就是还要将属性更改为不同的值。
要更轻松地创建不同的 Bird
对象,你可以设计 Bird 构造函数以接受参数:
function Bird(name, color) {
this.name = name;
this.color = color;
this.numLegs = 2;
}
然后将值作为参数传递给 Bird
构造函数中的每个唯一的鸟类。
var cardinal = new Bird("Bruce","red");
这给出了一个新的 Bird
实例,其名称和颜色属性分别设置为 Bruce 和红色。numLegs
属性仍然设置为 2。
cardinal
具有以下属性:
cardinal.name // => Bruce
cardinal.color // => red
cardinal.numLegs // => 2
构造函数更灵活了。现在可以在创建时为每个 Bird
定义属性,这是 JavaScript 构造函数非常有效的一种方式。它们根据共享特征和行为将对象分组在一起,并定义自动创建的蓝图。
练习
创建另一个 Dog
构造函数。这一次,设置参数 name
和 color
,并将属性 numLegs
固定为 4。然后创建一个新的 Dog
保存在变量 terrier
中。传递两个字符串作为 name
和 color
属性的参数。
Dog
应接收一个 name
属性的参数.
Dog
应该收一个 color
属性的参数.
Dog
属性 numLegs
应该设置成 4.
terrier
应该由 Dog
构造函数构建.
答案
方法 | 描述 |
new | 创建一个用户定义的对象类型实例或具有构造函数的内置对象实例 |
let | 声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。 |
thsi | 当前执行代码的环境对象 |
function Dog(name,color) {
this.name = name;
this.color = color;
this.numLegs = 4;
}
let terrier = new Dog("Xiaohei","white")