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



我正在阅读一本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();

我完全理解这一点。

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

我试图在 JSFiddel 中创建这个,但似乎失败了,我不确定为什么。任何人都可以发布一个简单的例子和解释。那真的很有帮助。

编辑::我不确定它是否告诉我我会完全编写另一个对象,或者在链接到名称/房间等的现有对象中放置一些变量。

提前谢谢。

参考:John Duckett - JavaScript 和 JQuery

您可以将其用作类,因此您可以通过键入new Hotel(name, rooms, booked)来重用 Hotel 对象

function Hotel(name, rooms, booked) {
this.name = name;
this.rooms = rooms;
this.booked = booked;
}
Hotel.prototype = {
checkAvailability: function() {
return this.rooms - this.booked;
}
}
var hotel = new Hotel('Quay', 40, 25);
var hotel2 = new Hotel('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();
<div id='hotel-name-1'></div>
<div id='free-rooms-1'></div>
<br>
<div id='hotel-name-2'></div>
<div id='free-rooms-2'></div>

好吧,您可以存储结构相同但值不同的对象。让我通过将示例对象包装到一个函数中来解释这一点,该函数具有相同的结构,可以抽出不同的酒店

function hotel(name, rooms, booked) {
var hotel = {
name: name,
rooms: rooms,
booked: booked,
checkAvailability: checkAvailability
};
return hotel;
}
//lets seperate the checkAvailability function from the function so it can be reused. 
function checkAvailability() {
return this.rooms - this.booked;
}
var hotel1 = hotel("quay", 40, 25);
var hotel2 = hotel("Ocean View", 50, 20);
console.log(hotel1);
console.log(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);

最新更新