所以在这个例子里,我们很有效的在Teacher()
构造函数里运行了Person()
构造函数(见上文),得到了和在Teacher()
里定义的一样的属性,但是用的是传送给Teacher()
,而不是Person()
的值(我们简单使用这里的this
作为传给call()
的this
,意味着this
指向Teacher()
函数)。
在构造器里的最后一行代码简单地定义了一个新的subject
属性,这将是教师会有的,而一般人没有的属性。
顺便提一下,我们本也可以这么做:
function Teacher(first, last, age, gender, interests, subject) {
this.name = {
first,
last
};
this.age = age;
this.gender = gender;
this.interests = interests;
this.subject = subject;
}
但是这只是重新定义了一遍属性,并不是将他们从Person()中继承过来的,所以这违背了我们的初衷。这样写也会需要更长的代码。