在对象中添加方法'的原型通过JavaScript中的循环

Adding methods in an object's prototype through a loop in JavaScript

本文关键字:原型 JavaScript 循环 添加 对象 方法      更新时间:2023-09-26

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

如果您需要更多信息,请留下评论。

您应该使用构造函数,并操作该函数的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]);
};