JS对象:强制属性值是某种类型
问题描述:
有没有办法确保属性的输入是某种类型?在这个例子中,我想检查新的狮子是否有鬃毛。在创建新的狮子对象时,有没有办法确保'mane'值是布尔值?JS对象:强制属性值是某种类型
function Lion(height, weight, fur, purr, mane) {
Cat.call(this, name, height, weight, fur, purr);
this.name = 'Lion';
this.mane = mane;
};
var lion1 = new Lion('100cm', '250kg', 'beige', 'ROAAAAAAAAR!', true);
答
你可以强制任何鬃毛是要通过使用Boolean(mane)
一个布尔值,它会输出真/假基于JavaScript truthy/falsey值始终guarantree鬃毛是一个布尔值。
this.mane = Boolean(mane);
答
可以使用typeof
运营商创建新对象时执行检查:
function Lion(height, weight, fur, purr, mane) {
Cat.call(this, name, height, weight, fur, purr);
this.name = 'Lion';
if (typeof mane === "boolean") {
this.mane = mane;
} else {
throw "type error" // or do whatever
}
};
+0
这似乎最适合我现在(仍然是初学者水平)。谢谢@nvioli! – Vincent
你可以检查typeof运算而初始化this.mane – marvel308
你可以添加打字稿到您的项目,并得到transpile时间错误,如果你的类型不匹配。或者当您使用它时,需要预先以确保演员。 –
rjustin
您可以创建一个修改该变量的设置方法,并在该方法中检查数据的类型 – Frankusky