2017-09-14 107 views
0

有沒有辦法確保屬性的輸入是某種類型?在這個例子中,我想檢查新的獅子是否有鬃毛。在創建新的獅子對象時,有沒有辦法確保'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

回答

0

你可以強制任何鬃毛是要通過使用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

0

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

相關問題