JavaScript引用类型对象和普通对象的区别

Difference between JavaScript reference type objects and plain objects

本文关键字:对象 区别 引用类型 JavaScript      更新时间:2023-09-26

我目前正在学习JavaScript。我对对象(引用类型和普通对象)感到困惑。下面是一些创建对象(引用类型)的代码:

function TheObject(first, last) {
  this.first = first;
  this.last = last;
}
TheObject.prototype.theMethod = function() {
  document.write("first : " + this.first + ", last : " + this.last + "</br>");
};
var anObject = new TheObject("Google", "Good");
anObject.theMethod();

这里有一些其他的代码也创建一个对象(它也是引用类型吗?):

var TheAnotherObject = function(first, last){
   return {
     first : first,
     last : last,
     theMethod : function() {
       document.write("first : " + this.first + ", last : " + this.last + "</br>");
     }
   };
 }
 var anotherObject = TheAnotherObject("Yahoo", "Good");
 anotherObject.theMethod();

现在,我的困惑是这两种创建对象的方式之间的实际区别在哪里。我知道我可以用两种方式创建对象类型(使用"new"关键字)。那有什么区别呢?

请帮助我理解我在这里遗漏了什么。我知道理解这一点非常重要,因为JavaScript大量使用函数和对象。任何帮助都会非常感激。

主要区别是:

第一种方法使用prototype定义theMethod方法。这意味着从该Class创建的所有instances将使用该方法的相同定义(theMethod)

否则,第二种方法在每次从Class创建新的instance时定义一个新的theMethod方法。显然,当实例太多的时候,它将是昂贵的,因为theMethod将有几个定义做同样的事情。

在创建时它们是相同的

然而,不同之处在于,第一种方法是将方法分配给原型,这意味着该方法只有一个实例。

而在第二个示例中,为每个新对象定义了方法。

基本上theMethod的引用是不一样的这意味着01。