Javascript原型问题

Javascript原型问题,javascript,memory,prototype,Javascript,Memory,Prototype,当我阅读javascript原型时,我有一个问题 假设我有以下函数和对象 Function #1: function Rectangle(w,h){ this.width = w; this.height = h; this.area = function(){return this.width * this.height} } var object1 = new Rectangle(10,5); var object11 = new Rectangle(5,5);

当我阅读javascript原型时,我有一个问题

假设我有以下函数和对象

Function #1:
function Rectangle(w,h){
    this.width = w;
    this.height = h;
    this.area = function(){return this.width * this.height}
}

var object1 = new Rectangle(10,5);
var object11 = new Rectangle(5,5);


Function #2:
function Rectangle(w,h){
    this.width = w;
    this.height = h;
}

Rectangle.prototype.area = function(){ return this.width * this.height; }

var object2 = new Rectangle(10,5);
var object22 = new Rectangle(5,5);
据我所知,object2和object22使用的内存比object1和object11少,因为函数2使用原型


这是否正确?

这在理论上是正确的,因为函数1每次调用时都为
区域创建一个唯一的
函数,而使用函数2创建的对象都引用一个公共函数

但是,每个JavaScript引擎将有不同的优化,并且可以优化函数1,以便在内部每个对象指向相同的函数,直到其中一个被修改为止(这是必要的,因为就语言而言,每个函数都是唯一的,将一个属性附加到一个函数不应影响其他函数)

关于每个浏览器执行的特定优化,web上的文档很少,但这里有一些参考文献似乎指向某种形式的闭包优化:


  • 对于经典的JavaScript视图,它是“正确的”。我认为现代JavaScript编译器可以减轻第一种方法的浪费,但是如果你正在创建许多可以在原型上共享功能的小对象,我仍然认为这样做是好的风格。

    复制。- @ SergeS / /你是对的。让我们关闭它。