http://jsfiddle.net/johnm01/c5k0yevm/
我试图再次理解原型,但不确定我在这里做错了什么,为什么在调用方法screamName时未定义输出?
function Person1(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
this.sayName = function sayMyName() {
alert(this.name + this.age + this.sex);
}
};
var p1 = new Person1("tim", 56, "male");
p1.sayName();
Person1.prototype.screamName = function screamName(name) {
this.name = name;
alert(this.name);
};
p1.screamName();
答案 0 :(得分:2)
screamName
函数需要您提供的name
参数,然后分配给this.name
。因此,它是undefined
。我相信你打算写这个:
Person1.prototype.screamName = function screamName() {
alert(this.name);
};
答案 1 :(得分:1)
好吧,看起来您已经定义了接受" name"参数的方法,但是当您调用它时,您实际上并没有将任何参数传递给方法。我还认为您需要创建一个新的Person1对象,以便使用screamname方法获得Person1对象。
function Person1(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
this.sayName = function sayMyName() {
alert(this.name + this.age + this.sex);
}
}
var p1 = new Person1("tim", 56, "male");
p1.sayName();
Person1.prototype.screamName = function screamName() {
alert(this.name);
};
var p2 = new Person1("bob", 22, "male");
p2.screamName();