我有一个功能。
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()
两种方式调用其方法?
答案 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
)。