Javascript 同一页上的两个相似对象

Javascript 同一页上的两个相似对象,javascript,notation,object-literal,Javascript,Notation,Object Literal,我正在阅读一本JavaScript书籍,目前正在考虑使用文字符号创建对象 我得到了以下代码: var hotel = { name: 'Quay', rooms: 40, booked:25, checkAvailability: function() { return this.rooms - this.booked; } } var hotelName = document.getElementById('hotel-name'); hotelName.textContent = hot

我正在阅读一本JavaScript书籍,目前正在考虑使用文字符号创建对象

我得到了以下代码:

var hotel = {
name: 'Quay',
rooms: 40,
booked:25,
checkAvailability: function() {
return this.rooms - this.booked;
 }
}

var hotelName = document.getElementById('hotel-name');
hotelName.textContent = hotel.name;

var freeRooms = document.getElementById('free-rooms');
freeRooms.textContent = hotel.checkAvailability();
我完全理解这一点

然后它告诉我‘如果在同一个页面上有两个对象,您将使用相同的符号创建每个对象,但将它们存储在具有不同名称的变量中。’

我曾尝试在JSFIDEL中创建这个,但似乎失败了,我不知道为什么。有人能举个简单的例子解释一下吗。那真的很有帮助

编辑::我不确定它是否告诉我,我将完整地编写另一个对象,还是将一些变量放在链接到name/rooms等的现有对象中

提前谢谢


参考:John Duckett-JavaScript和JQuery

您可以将其作为一个类使用,因此您可以通过键入
新建酒店(名称、房间、预订)

多功能酒店(名称、房间、预订){
this.name=名称;
这个房间=房间;
这是预定的;
}
原型酒店={
checkAvailability:function(){
归还此.rooms-此.booked;
}
}
var酒店=新酒店(‘码头’、40、25);
var hotel2=新酒店('hotel2',50,45);
var hotelName=document.getElementById('hotel-name-1');
hotelName.textContent=hotel.name;
var freeRooms=document.getElementById('free-rooms-1');
freeRooms.textContent=hotel.checkAvailability();
var hotelName=document.getElementById('hotel-name-2');
hotelName.textContent=hotel2.name;
var freeRooms=document.getElementById('free-rooms-2');
freeRooms.textContent=hotel2.checkAvailability()



嗯,您可以存储结构相同但值不同的对象。让我通过将示例对象包装成一个函数来解释这一点,该函数使用相同的结构输出不同的酒店

多功能酒店(名称、房间、预订){
瓦尔酒店={
姓名:姓名,,
房间:房间,
预定的,预定的,
checkAvailability:checkAvailability
};
返回酒店;
}
//让我们将checkAvailability函数与函数分开,以便可以重用。
功能检查可用性(){
归还此.rooms-此.booked;
}
var hotel1=酒店(“码头”,40,25);
var hotel2=酒店(“海景”,50,20);
控制台日志(hotel1);
控制台日志(hotel2);
console.log(hotel1.checkAvailability());

console.log(hotel2.checkAvailability())和另一个通过es6类使用不同实例的酒店的示例:

class Hotel {
  constructor(name, rooms, booked) {
    this.name = name;
    this.rooms = rooms;
    this.booked = booked;
  }

  get checkAvailability() {
    return this.rooms - this.booked;
  }
}

const hotelOne = new Hotel('First', 44, 21),
      hotelTwo = new Hotel('Second', 21, 5);
console.log(hotelOne.checkAvailability);
console.log(hotelTwo.checkAvailability);

请展示你所做的尝试。应该像那句话所说的那样工作,即:
var obj={},obj2={}
听起来答案可能在书中。也许你在这之前错过了什么。或者还没有读够。无论如何,这个问题是关于什么的还不是很清楚。对不起,我不是说它不起作用,我只是想解释一下它是怎么写的,我只是在努力理解解释。@11-哦,这意味着如果你有另一家酒店,你可以用完全相同的方式声明它,但使用不同的变量名,ie:
var hotel={…},hotel2={…}
@tymeJV啊,我明白了,所以我要完全写另一个对象?与在现有对象中添加变量相反,Hi Mouser,quick question,当您编写..name:name或rooms:rooms时,Javascript是否会自动用参数参数替换第二个“name”或“rooms”?Jope这是有意义的,对所有术语来说都是新的。是的,它接受函数中提供的参数,并将它们分配给对象。最后,它将对象返回给具有指定属性的变量。