function object1(){
}
object1.prototype.myMethod = function(){};
function object2(){
this.myMethod = function(){};
}
我需要编写一个if语句,它可以检查任何给定对象是否具有myMethod
函数,而不创建所述对象的实例。这可能吗?
这:testMe.prototype.hasOwnProperty('myMethod')
仅适用于object1
,但object2
将返回false。
这是为了什么?我正在尝试模拟接口。我需要在处理之前检查函数是否尊重我的界面,并且我希望让用户完全自由地了解如何声明此函数。创建该功能的实例来检查它的属性听起来像是打开一个上面写着“水”的瓶子来检查里面是否有水。
答案 0 :(得分:1)
在没有实例化的情况下,你无法检查一个对象是否会有一些实例方法,因为你可以在任何地方添加一个新方法:
var myObj= {};
...
if (myObj.newMethod) { //false
...
}
myObj.newMethod=function(){...};
if (myObj.newMethod) { //true
...
}
答案 1 :(得分:0)
由于仅在实例化对象上分配此方法,因此第二个不能在没有实例化的情况下工作。函数object2的主体中的代码是它的“构造函数”,它显然只在实例化上运行。