检查对象是否有方法,而不实例化它

Check if object has method, without instantiating it

本文关键字:实例化 对象 是否 有方法 检查      更新时间:2023-09-26
function object1(){

}
object1.prototype.myMethod = function(){};
function object2(){
    this.myMethod = function(){};
}

我需要编写一个if语句,它可以检查任何给定的对象是否具有myMethod函数,而无需创建所述对象的实例。这可能吗?

这:testMe.prototype.hasOwnProperty('myMethod')只适用于object1,但对于object2将返回false。


这是干什么用的?我正在尝试模拟接口。在处理函数之前,我需要检查它是否尊重我的接口,我想让用户完全自由地声明这个函数。创建该函数的实例以检查其属性听起来就像打开一个写有"水"的瓶子来检查里面是否有水。

在不实例化对象的情况下,您无法检查对象是否具有某些实例方法,因为您可以在任何位置添加新方法:

var myObj= {};
...
if (myObj.newMethod) { //false
...
}
myObj.newMethod=function(){...};
if (myObj.newMethod) { //true
...
}

第二个方法在没有实例化的情况下不起作用,因为只在实例化对象时分配了这个方法。函数object2的主体中的代码是它的"构造函数",显然它只在实例化时运行。