3

我有课

function Foo(a) {
  this.a = a;
  this.bar = function () {
    console.log(this.a);
  };
  this.buz = function () {
    this.a();
    console.log('bzz');
  };
}

我会有很多此类的实例。我应该将方法移动到原型吗?

function Foo(a) {
  this.a = a;
}
Foo.prototype = {
  bar: function () {
    console.log(this.a);
  },
  buz: function () {
    this.a();
    console.log('bzz');
  }
}
4

3 回答 3

6

是的。这将节省内存,因为每次shared实例化类时都会重新创建每个方法,而不是重新创建。

构造函数内部的方法被认为privileged methods可以访问private variables构造函数内部的方法,并且仅在您需要访问私有变量时才应使用。

Crockford 谈特权方法

于 2012-07-31T18:47:45.950 回答
1

放置类方法是节省内存的好主意。原型中只有一个方法实例,而不是每个对象中的许多实例。

于 2012-07-31T18:48:21.760 回答
1

在 JS 的构造函数中定义方法的唯一原因是创建一个“ Privileged ”方法。

这个想法是创建一个公开可用的方法,但可以访问私有实例变量。

于 2012-07-31T18:51:16.037 回答