如何测试Javascript对象是否具有给定名称的方法?

时间:2010-10-14 11:31:06

标签: javascript

考虑以下示例:

var Container = function(param) {
    this.member = param;
    var privateVar = param;
    if (!Container.prototype.stamp) {  // <-- executed on the first call only
        Container.prototype.stamp = function(string) {
            return privateVar + this.member + string;
        }
    }
}

var cnt = new Container();

有没有办法确定对象cnt是否有一个名为stamp的方法而不知道它是从Container实例化的?

Another Example

2 个答案:

答案 0 :(得分:2)

您可以使用hasOwnProperty

o = new Object();  
o.prop = 'exists';  
o.hasOwnProperty('prop');             // returns true  
o.hasOwnProperty('toString');         // returns false  
o.hasOwnProperty('hasOwnProperty');   // returns false  

答案 1 :(得分:2)

您可以使用以下代码测试stamp是否存在

if (cnt.stamp) ...

或者您可以检查它是否是

的功能
if (typeof cnt.stamp === 'function') ...