【发布时间】:2011-11-22 03:24:37
【问题描述】:
我有一个可以对特定 DOM 元素执行方法的小库。看起来有点像这样:
//An accessor method for the library
window.$ = function(selector){
var new_instance = new lib();
return new_instance.init(selector);
}
//And the actual library...
function lib(){
this.context = window;
this.init = function(sel){
this.context = document.querySelector(sel);
return this;
};
this.addPlugin = function(name, fn){
lib.prototype[name] = fn;
return this;
};
}
与 Prototype 或 jQuery 一样,您可以通过 $(_selector_) 调用选择元素。要将方法添加到库中,您将使用 lib.addPlugin(...) 方法。不幸的是,当我添加这样的方法时:
lib.addPlugin('foo',function(){
console.log(this.context);
return this;
});
THIS 关键字指的是window,而不是原始父库实例。我不太了解所有原型的工作原理,但我想知道是否有某种方法可以解决/修复这个问题。我希望新添加的方法能够引用父库的变量。
【问题讨论】:
标签: javascript prototype-programming