0
var setAge = function (newAge) {
  this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;
bob.setAge(50);
console.log(bob.age);

这行得通,但是当我尝试这样做时

var setAge = function (newAge) {
  this.age = newAge;
};
var bob = new Object();
bob.age = 30;
bob.setAge(50);
console.log(bob.age);

它在编译器中返回“bob.setAge() 不是函数”?

4

2 回答 2

0

第二个示例不起作用,因为您没有定义 setAge,就像您在此处定义的那样bob.setAge = setAge;。您创建了一个new Object(),而不是一个新的自定义对象。你正在使用排序混合代码......这就是你可以做“类”的方式

var MyObject = function (age) {
  this.age = age;
  var that = this;
  this.setAge = function (newAge) {
    that.age = newAge;
  }
};
var foo = new MyObject(10);
alert(foo.age);
foo.setAge(20);
alert(foo.age);
于 2013-01-21T05:19:34.513 回答
0

您创建了一个对象“Bob”,但该对象在分配之前没有方法“setAge”。

您可能想考虑在您的设计中做这样的事情:

function Person(){
this.age = 30;
this.setAge = function(age){
 this.age = age;
 return this;
}
}

var bob = new Person;
bob.setAge(20);
console.log(bob.age);
于 2013-01-21T05:20:14.453 回答