在构造函数中创建JavaScript原型

在构造函数中创建JavaScript原型,javascript,oop,prototype,Javascript,Oop,Prototype,在构造函数中添加到对象的原型时,内存中会发生什么?是否每次创建新对象时都会重新创建它 例如: function Foo(){ Foo.prototype.bar = function() { console.log("bar func called"); } } var x = new Foo(); x.bar(); var y = new Foo(); y.bar(); 每次调用某个函数时,放入该函数的所有代码都会运行,即使所述代码指定了原型的属性。是的。创建代码将在

在构造函数中添加到对象的原型时,内存中会发生什么?是否每次创建新对象时都会重新创建它

例如:

function Foo(){
  Foo.prototype.bar = function() {
    console.log("bar func called");
  }
}    
var x = new Foo();
x.bar();
var y = new Foo();
y.bar();

每次调用某个函数时,放入该函数的所有代码都会运行,即使所述代码指定了原型的属性。

是的。创建代码将在每次实例化Foo时执行。

代码的“性质”无关紧要,它将在每次调用它时执行。这意味着是的,每次调用
newfoo()
时,原型的函数
bar
都会被重新分配


这也意味着每个
Foo
对象都会得到一个新的
bar
方法,即使是那些已经存在的方法。

而且,您可能想补充一点,这是一种糟糕的代码编写方法。原型应分配一次,而不是重复。