这里的东西,让你开始:
var proto_methods = {
analyse: function() {
var node = this.node;
// ...
}
}, wrap, _wrap;
_wrap = function(selector) { this.node = document.querySelector(selector); };
_wrap.prototype = proto_methods;
wrap = function(selector) {
return new _wrap(selector);
};
使用方法如下:
wrap("#mydiv").analyse();
使用这个,如果你想添加更多的插件(和它的多一点的面向对象):
var pack = {
binder: [{}]
};
pack.query_bind = function(bound) {
if (bound) pack.binder[1] = bound;
};
pack.fn = function(attributes) {
for (var i in attributes) pack.binder[0][i] = attributes[i];
};
var _wrap = function(selector) {
this.node = /^(#|.)\w+/.test(selector) ? pack.binder[1](selector) : {};
};
_wrap.prototype = pack.binder[0];
var wrap = function(selector) {
pack.query_bind(document.querySelector.bind(document));
return new _wrap(selector);
};
wrap.fn = pack.fn;
wrap.fn({
cool: function() {},
nice: function() {}
});
wrap('#mydiv').cool();
您可以随时致电wrap.fn
原型将被更新。
但是,请注意,这不是一个真正的jQuery替代品,因为有很多我没有包含在此代码中的东西。在许多方面,wrap
函数并不像jQuery的$
那样先进和有用。
我希望这会有所帮助。
然后您只需编写一个接受DOM元素的函数。 –
你的问题到底是什么?你可以创建一个替代jQuery的对象类型并对其进行修改 - 你只需要一点管道就可以做选择。 – Hogan
@Hogan对不起,迟到的答案。现在的问题是:如果Object.prototype.extension被忽略,那么扩展对象功能的首选方法是什么? –