只允许某些类型的属性
function Dude() {
this.firstName = '';
this.lastName = '';
};
var d = new Dude();
d.firstName = 'Ok mr';
d.firstName = 100;
我如何防止/防范100给firstName的赋值,以便它始终是一个字符串? 分配一个数字,数组另一个对象应该转换为一个字符串。
尽量让这些变量保密,并为它们写getter和setter。 在setter中,您可以检查正确的类型。 看到这个答案检查类型。
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
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。
链接地址: http://www.djcxy.com/p/94991.html