0

我试图通过使用 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]);
};

如果您需要更多信息,请发表评论。

4

1 回答 1

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]);
};
于 2013-07-28T12:26:59.083 回答