3 回答

TA貢獻1795條經驗 獲得超7個贊
既然你想調用這個方法,你應該先檢查它是否真的是一個方法。如果它是一個非函數屬性,那么你所做的將導致 TypeError。
const obj = {
add: true
}
if (obj.add) {
console.log(obj.add(9, 3));
}
if (obj.sub) {
console.log(obj.sub(8, 2));
}
所以:
const obj = {
add(a, b) {
return a + b
},
badProp: true
}
const verify = arg => typeof arg === 'function';
if (verify(obj.add)) {
console.log(obj.add(9, 3));
}
if (verify(obj.sub)) {
console.log(obj.sub(8, 2));
}
if (verify(obj.badProp)) {
obj.badProp();
}

TA貢獻2021條經驗 獲得超8個贊
typeof() 是一種檢查天氣的方法 var 是函數還是其他任何東西。
if (typeof obj.add === 'function') {
console.log(obj.add(9, 3));
}

TA貢獻1773條經驗 獲得超3個贊
你可以這樣試試。檢查是否object key是一個函數,
const obj = {
add:function (a, b) {
return a + b
},
sub:function (a, b) {
return a - b
}
}
if (typeof obj.add === 'function') {
console.log(obj.add(9, 3));
}
if (typeof obj.sub === 'function') {
console.log(obj.sub(8, 2));
}
添加回答
舉報