JavaScript 中方法的存在:检查是否足够真实?

如果我想测试一个对象是否有特定的方法:下面的代码工作可靠吗?


const obj = {

  add(a, b) {

    return a + b

  }

}


if (obj.add) {

    console.log(obj.add(9, 3));

}


if (obj.sub) {

    console.log(obj.sub(8, 2));

}

或者它可能会失败?如果是这样:出于什么原因?


如果这还不够:我应该用什么来代替?


慕村225694
浏览 152回答 3
3回答

一只萌萌小番薯

既然你想调用这个方法,你应该先检查它是否真的是一个方法。如果它是一个非函数属性,那么你所做的将导致 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();}

宝慕林4294392

typeof() 是一种检查天气的方法 var 是函数还是其他任何东西。if (typeof obj.add === 'function') {    console.log(obj.add(9, 3));}

慕容3067478

你可以这样试试。检查是否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));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript