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); 
+0

你可以检查typeof运算而初始化this.mane – marvel308

+0

你可以添加打字稿到您的项目,并得到transpile时间错误,如果你的类型不匹配。或者当您使用它时,需要预先以确保演员。 – rjustin

+0

您可以创建一个修改该变量的设置方法,并在该方法中检查数据的类型 – Frankusky

你可以强制任何鬃毛是要通过使用Boolean(mane)一个布尔值,它会输出真/假基于JavaScript truthy/falsey值始终guarantree鬃毛是一个布尔值。

this.mane = Boolean(mane); 
+0

我认为'!!鬃毛'是更习惯于这样做的方式。它不会调用函数或将其放入对象中。 – Barmar

+0

当然输出是相同的,但对于不熟悉JS推杆的人来说!在变量名前面可能不是很可读。 – AHB

+0

你可以链接到这个问题:https://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript/784946#784946 – Barmar

可以使用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