向对象添加方法

Dre*_*rew 2 javascript

我在javascript中向对象添加方法时遇到问题.以下代码应返回一个数字,而是返回NaN.希望你能帮忙

function people(name, age){
    this.name = name;
    this.age = age;
    this.numYearsLeft = pension();
}

function pension(){
    numYears = 65 - this.age;
    return numYears;
}

var andrews = new people("Andrews Green", 28);

console.log(andrews.numYearsLeft);
Run Code Online (Sandbox Code Playgroud)

Rok*_*jan 5

你可以使用一个原型模型-制作pension一个方法people:

function people(name, age){
  this.name = name;
  this.age = age;
  this.numYearsLeft = this.pension();  // note the `this`
}

people.prototype.pension = function(){ // note the `prototype`
  var numYears = 65 - this.age;
  return numYears;
};

var andrews = new people("Andrews Green", 28);

console.log(andrews.numYearsLeft);     // 37
Run Code Online (Sandbox Code Playgroud)

使用prototype您的pension方法将继承构造函数的(people)属性(允许您使用this关键字引用).
这样做的另一个好处是,在每次new实例化时,people您都不会重新创建方法的新实例/召回pension.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript