javascript - 只允许某些类型的属性

标签 javascript object properties

function Dude() {
    this.firstName = '';
    this.lastName = '';
};

var d = new Dude();
d.firstName = 'Ok mr';
d.firstName = 100;

如何防止/保护将 100 分配给firstName,以便它始终是一个字符串?分配一个数字,数组另一个对象应该转换为字符串。

最佳答案

尝试将变量设为私有(private)并为它们编写 getter 和 setter。在 setter 中,您可以检查类型是否正确。请参阅this answer用于检查类型。

function Dude() {
    var firstName = '';
    var lastName = '';

    this.setFirstName = function(name) {
        if(typeof name == 'string' || name instanceof String) {
            firstName = name;
        }
    }
    this.getFirstName = function() {
        return firstName;
    }
};

var d = new Dude();
d.setFirstName('Ok mr');
d.setFirstName(100);

console.log(d.getFirstName()); // returns "Ok mr"

但请注意:当您使用输入元素的值或在引号中传递名称时,它将是一个字符串。不管它是否代表数字。

引用:http://javascript.crockford.com/private.html

关于javascript - 只允许某些类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672556/

相关文章:

javascript - 将数组从 ajax 发送到 Flask 不起作用

XML 标记、属性及其定义

javascript - Mongodb 查询 ObjectID 返回 null

php - 如何实现多人浏览器游戏?

javascript - 在 Javascript 对象数组中添加一个对象

java - 对象引用返回 null Java

c# - 使用 ReSharper 为属性生成只读字段

javascript - 如何制作具有属性的 JavaScript 数组?

javascript - 如何使用 1 个文本框在空数组中添加 5 个数字?

javascript - 在 JavaScript 中的同一对象中重用 key