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 を定義していないため、2 番目の例は機能しません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 に答える