//copy obj
function shallowCopyObj(dest, src) {
var pNum = arguments.length;
if (pNum == 0) {
return EMPTY_VALUES.EMPTY_OBJECT;
}
else if (pNum == 2) {
for (var key in src) {
dest[key] = src[key];
}
} else {// >2
for (var i = 1; i < pNum; i++) {
dest = shallowCopyObj(dest, arguments[i]);
}
}
return dest;
}
//extend interface
var extend_interface = {
extend: function () {
for (var i = 0; i < arguments.length; i++) {
shallowCopyObj(this, arguments[i]);
}
},
};
var obj = EMPTY_VALUES.EMPTY_OBJECT;
shallowCopyObj(obj, extend_interface);
//define fields,methods of instance object
obj.extend({k1:v1,k2:v2,...,f1:function(){...},f2:function(){...}},obj2,obj3,...);
function f(){...}
shallowCopyObj(f, extend_interface);
//class static method
f.extend({f1:function(){...},f2:function(){...}},static_methods_obj2,static_method_obj3,...);
//html element
function dom(node) {
notInstanceof(this, dom, 'dom is an class,have to use "new"!');
this.init(node);
};
//定义对象扩展接口.
shallowCopyObj(dom, extend_interface);
//定义对象原型链方法扩展接口.
shallowCopyObj(dom.prototype, extend_interface);
var dom_prototype_extend = {
//real constructor
init: function (n) {
this.node = n;
},
};
dom.prototype.extend(dom_prototype_extend);