javascript原型设计,我在这里做错了什么

时间:2015-02-16 20:23:46

标签: javascript

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();

2 个答案:

答案 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();

https://jsfiddle.net/johnm01/c5k0yevm/

相关问题