如何向 JavaScript 中的构造函数添加属性?例如。如果我有以下功能。
function Hotel(name)
{
this.name = name;
};
var hotel1 = new Hotel('Park');
我可以添加一个“本地”变量,它可以在类中本地使用,就好像它是私有(private)的一样,使用关键字“this”使用相同的符号。当然它不会是私有(private)的,因为创建的对象将能够正确使用它?
我可以做这样的事情吗?我是使用 this
关键字还是使用 var
关键字
哪一个?我在底部的函数构造函数上有示例 2
1. var numRooms = 40;
2. this.numRooms = 40;
3. numRooms : 40,
function Hotel(name)
{
this.name = name;
this.numRooms = 40;
};
我知道如果我想在对象构造函数中使用一个函数,我需要使用 this
词。这是否也适用于我上面所问的普通变量。
function Hotel(name)
{
this.name = name;
this.numRooms = 40;
this.addNumRoomsPlusFive = function()
{
return this.numRooms + 5;
}
};
最佳答案
您可以简单地将一个私有(private)变量添加到您的构造函数中:
function Hotel(name) {
var private = 'private';
this.name = name;
};
但是如果您将在没有new
运算符的情况下使用您的Hotel
函数,则附加到this
的所有属性和函数都将变为全局。
function Hotel(name) {
var private = 'private';
this.name = name;
};
var hotel = Hotel('test');
console.log(name); // test
在构造函数中返回一个对象是个好主意:
function Hotel(name) {
var
private_var = 'private',
private_func = function() {
// your code
};
retur {
name: 'name',
public_func: private_func
}
};
var hotel = Hotel('test');
console.log(name); // undefined
因此,如果您使用不带 new
运算符的 Hotel
构造函数,则不会创建全局变量。仅当返回值是一个对象时才有可能。否则,如果您尝试返回任何非对象的内容,构造函数将继续其通常的行为并返回 this
。
关于Javascript - 如何将属性添加到对象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36963993/