Javascript - 如何向对象构造函数添加属性

Hug*_*rea 6 javascript

如何向 JavaScript 中的构造函数添加属性?例如。如果我有以下功能。

function Hotel(name)
{
   this.name = name;
};

var hotel1 = new Hotel('Park');
Run Code Online (Sandbox Code Playgroud)

我可以添加一个“本地”变量,该变量可以在类中本地使用,就好像它是私有的,使用关键字“this”使用相同的符号。当然它不会是私有的,因为创建的对象将能够正确使用它?

我可以做这样的事情吗?我是使用this关键字还是使用var关键字是哪一个?我在底部的函数构造函数上有示例 2

1. var numRooms = 40;
2. this.numRooms = 40;
3. numRooms : 40,

function Hotel(name)
{
   this.name = name;
   this.numRooms = 40;
};
Run Code Online (Sandbox Code Playgroud)

我知道如果我想要在对象构造函数中使用函数,我需要使用这个this词。正如我上面所问的那样,这对于普通变量也同样有效吗?

function Hotel(name)
{
   this.name = name;
   this.numRooms = 40;

   this.addNumRoomsPlusFive = function()
   {
       return this.numRooms + 5;
   }

};
Run Code Online (Sandbox Code Playgroud)

Reg*_*lez 0

通常它是使用闭包执行的:

var Hotel = (function() {
      var numrooms=40; // some kind of private static variable

      return function(name) { // constructor
         this.numrooms = numrooms;
         this.name = name;
      };
}());

var instance = new Hotel("myname");
Run Code Online (Sandbox Code Playgroud)