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

标签 javascript

如何向 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/

相关文章:

javascript - 禁用按钮直到字段已满纯JS

javascript - 需要点击2次才能激活jquery功能,然后点击1次

javascript - 移动导航覆盖问题

javascript - 如何避免 ` PromiseRejectionHandledWarning: Promise rejection was handled asynchronously`?

javascript - Node : AWS KMS erasing public key from memory

javascript - 通过 f11 启用全屏后通过 javascript 禁用全屏

正则表达式 : Strip path until last occurence in a capturing group

javascript - 检测 PDF 文档的结尾

javascript - 循环输入元素并获取所有以 'value_' 开头的 id

javascript - 从 AJAX 打印页面