定义了一个可以作为对象调用的函数

时间:2014-05-26 14:44:26

标签: javascript function object

我有一个功能。

function obj(id){
    if (this.__proto__.constructor !== i) {
        return new i(id);
    }
    this.element = (typeof id === 'string') ? document.getElementById(id) : id;
    this.remove = function(){
        this.element.parentNode.removeChild(this.element);
    }
    this.cookie = function (name,value,expire){
        var now = new Date();
        var time = now.getTime();
        time += expire*1000; //in second
        now.setTime(time);
        document.cookie = name + '=' + value + '; expires=' + now.toUTCString() + '; path=/';
    }
}

我可以轻松调用方法remove,例如obj("someid").remove();,但方法cookie。功能cookie不依赖于id

如何定义对象obj以便以obj(id).remove()obj.cookie()两种方式调用其方法?

1 个答案:

答案 0 :(得分:1)

它应该是这样的:

function obj(id) {
    if (!(this instanceof obj)) return new obj(id);

    this.element = (typeof id === 'string') ? document.getElementById(id) : id;
}
obj.prototype.remove = function() {
    this.element.parentNode.removeChild(this.element);
};
obj.cookie = function(name,value,expire) {
    var now = new Date();
    var time = now.getTime();
    time += expire*1000; //in second
    now.setTime(time);
    document.cookie = name + '=' + value + '; expires=' + now.toUTCString() + '; path=/';
};

一个函数(如obj一个对象,因此您只需向其中添加属性(如.cookie)。