Javascript 创建对象的多个实例时,附加的方法是共享的还是复制的?

Javascript 创建对象的多个实例时,附加的方法是共享的还是复制的?,javascript,object,methods,Javascript,Object,Methods,我一直在审查这两个MDN文档,并试图确定是否值得将一组大型代码从一组函数修改为一个具有一组方法的对象,因为我希望允许用户创建页面大部分的多个实例 我一直在尝试的小测试工作得很好,这似乎是一个很好的方法,但我不太明白当创建一个对象的多个实例时,附加的方法会发生什么 在这个MDN示例之后,由于方法声明不在构造函数中,如果创建了MyObject的三个实例,这三个实例是否会“共享”相同的两个方法,类似于仅声明两个函数并传递对象数据,或者,它是否会导致向脚本中添加六个函数,其中每个实例都有相同两个函数的相

我一直在审查这两个MDN文档,并试图确定是否值得将一组大型代码从一组函数修改为一个具有一组方法的对象,因为我希望允许用户创建页面大部分的多个实例

我一直在尝试的小测试工作得很好,这似乎是一个很好的方法,但我不太明白当创建一个对象的多个实例时,附加的方法会发生什么

在这个MDN示例之后,由于方法声明不在构造函数中,如果创建了
MyObject
的三个实例,这三个实例是否会“共享”相同的两个方法,类似于仅声明两个函数并传递对象数据,或者,它是否会导致向脚本中添加六个函数,其中每个实例都有相同两个函数的相同副本

多谢各位

function MyObject(name, message) {
  this.name = name.toString();
  this.message = message.toString();
}
MyObject.prototype.getName = function() {
  return this.name;
};
MyObject.prototype.getMessage = function() {
  return this.message;
};

object_1 = new MyObject( name_1, message_1 );
object_2 = new MyObject( name_2, message_2 );
object_3 = new MyObject( name_3, message_3 );

假设“函数是第一类对象”,那么您可以使用
===
object\u 1.getName===object\u 2.getName>检查它们的引用相等性。并检查此@lastr2d2谢谢。这很有趣;我以前没有想到函数会有一个引用。我试过了,结果是
true
。这是否意味着多个实例继承属性名称和方法,并且只在属性值上有所不同?这与只声明继承方法的一个副本是一样的。我读了一些问题,这些问题似乎在Java类中也是如此,但在JavaScript中找不到证实。这取决于如何定义这些属性。在您的示例中,
this.name
属于实例,而
getName
属于函数原型。检查原型链环,你会得到更好的解释谢谢。我想我现在明白了
hasOwnProperty
似乎提供了相同的结果。