function Dude() {
this.firstName = '';
this.lastName = '';
};
var d = new Dude();
d.firstName = 'Ok mr';
d.firstName = 100;
如何防止/保护100分配给firstName以便它始终是一个字符串?分配数字,数组另一个对象应转换为字符串。
答案 0 :(得分:2)
尝试将变量设为私有,并为它们编写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"
但请注意:当您使用输入元素的值或在引号中传递名称时,它将是一个字符串。无论它是否代表一个数字。
答案 1 :(得分:0)
function Dude() {
this.firstName = '';
this.lastName = '';
Dude.prototype.setFirstName(name) = function() {
if(typeof name != "string") this.firstName = name.toString();
else this.firstName = name;
};
Dude.prototype.setLastName(name) = function() {
if(typeof name != "string") this.lastName = name.toString();
else this.lastName = name;
};
}
var d = new Dude();
d.setFirstName("name");
d.setLastName(100);
这些函数检查名称是否为字符串,如果不是,则名称将转换为字符串。这意味着它将作为字符串分配给firstName或lastName。