0

我在 JavaScript 中有一个这样的构造函数:

function Foo() {

  var privateProperty = "goodbye";
  this.publicProperty = "hello";

  function privateMethod() {

    return "Shhhhh";
  }
  this.publicMethod = function publicMethod() {

    return "extroverted";
  };
}

Foo.prototype.youCanSeeMe = "I'm out here";
Foo.prototype.typical = function typical() {

  return "look at me out here";
};

var b = new Foo();
var c = new Foo();

在最新版本的 v8 JavaScript 引擎中,我的类的哪些属性被复制到内存中?我的意思是,现在内存中有两个副本privateProperty, publicProperty, privateMethod, 等等吗?

如果 的内存占用b是 100 字节,那么 和 的内存占用b总共c是 200 字节吗?更大,更小?

4

1 回答 1

0

类构造函数中的所有内容都将作为副本存在于内存中,而 Foo.prototype 中的所有内容都将在实例之间共享。因此内存占用应略小于 200 字节

如需参考,请参阅优秀的 MDN Javascript Inheritance 和原型链文章,其中解释了如何在 javascript 中访问属性

于 2015-02-28T01:46:42.120 回答