JavaScript引用类型对象和普通对象的区别
Difference between JavaScript reference type objects and plain objects
我目前正在学习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。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 这两种不同的创建对象文字的方法有什么区别
- 快递之间的区别.路由器() vs 多个 express() 对象
- 定义这些对象有什么区别
- 在 JavaScript 中的对象内分配柯里函数时,这和 self 之间有什么区别吗?
- javascript 的 Set 和普通的普通对象有什么区别
- 什么's对象文字中带引号和不带引号的键之间的区别
- javascript中对象扩充和类扩充的区别
- 在window.onload之前/之后创建对象之间的区别
- 使用构造函数创建对象和返回对象有区别吗
- 用两种方式保存对象,有什么区别
- JavaScript中带有构造函数的对象和闭包之间的区别
- 使用原型和对象文字表示法创建对象之间的区别
- obj={value:1} 和 obj.value=1 之间的区别,用于重写对象
- 按键名调用 JSON 对象的方法有什么区别
- 在 JavaScript 中,构造函数和作为构造函数调用的返回对象的函数之间有什么区别
- 在 javascript 中创建类以创建对象与在 Java 中创建类和对象之间的区别