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

时间:2014-04-22 16:19:45

标签: javascript oop

function object1(){


}

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

function object2(){

    this.myMethod = function(){};

}

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

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


这是为了什么?我正在尝试模拟接口。我需要在处理之前检查函数是否尊重我的界面,并且我希望让用户完全自由地了解如何声明此函数。创建该功能的实例来检查它的属性听起来像是打开一个上面写着“水”的瓶子来检查里面是否有水。

2 个答案:

答案 0 :(得分:1)

在没有实例化的情况下,你无法检查一个对象是否会有一些实例方法,因为你可以在任何地方添加一个新方法:

var myObj= {};
...

if (myObj.newMethod) { //false
...
}

myObj.newMethod=function(){...};

if (myObj.newMethod) { //true
...
}

答案 1 :(得分:0)

由于仅在实例化对象上分配此方法,因此第二个不能在没有实例化的情况下工作。函数object2的主体中的代码是它的“构造函数”,它显然只在实例化上运行。