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"
但请注意:当您使用输入元素的值或在引号中传递名称时,它将是一个字符串。不管它是否代表数字。
关于javascript - 只允许某些类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672556/