我试图通过使用for循环一次向对象添加几个方法。
我所拥有的是一个数组,其中包含数组中的点击,加载等几个事件的名称,因此我很容易将这些事件插入到我的库的对象中。但是,我无法通过循环将方法添加到我的对象中。
这是我的代码:
function(something) myLibrary {
if(this === window) {return new myLibrary }
this.e = document.getElementById(something);
}
var eventsArr = ['click','load','drag','drop'];
var addEventToProto = function (method) {
if(!myLibrary.hasOwnProperty(method)) {
myLibrary.prototype[method] = function (fn) { addEventListener(this.e, method, fn); };
}
};
for (i = 0; i < eventsArr.length; i += 1) {
addEventToProto(eventsArr[i]);
};
如果您需要更多信息,请发表评论。
答案 0 :(得分:1)
您应该使用构造函数并操纵该函数的prototype
属性。对象没有公开的prototype
属性,只有函数具有。使用构造函数创建和实例时,结果对象的内部[[prototype]]
属性将设置为指向构造函数的公开prototype
属性。即使在实例化对象后,您也可以操纵prototype
属性:
function myLibraryConstructor() {
this.e = document.getElementById('someElement!');
}
var myLibrary = new myLibraryConstructor();
var eventsArr = ['click','load','drag','drop'];
var addEventToProto = function (method) {
if(!myLibrary.hasOwnProperty(method)) {
myLibraryConstructor.prototype[method] = function (fn) { addEventListener(this.e, method, fn); };
}
};
for (i = 0; i < eventsArr.length; i += 1) {
addEventToProto(eventsArr[i]);
};