Я делаю объект, который получает селектор в качестве аргумента, который имеет один метод с именем stylise
, который используется для внесения изменений в CSS выбранного HTML-элемента (ов).Использовать объект напрямую
Код:
/* ----- JavaScript ----- */
function get(selector) {
var
self = {},
elements = Array.from(document.querySelectorAll(selector));
this.stylise = function(object) {
Object.keys(object).forEach(function(propertyName) {
for (var index = 0; index < elements.length; index++) {
elements[index].style[propertyName] = object[propertyName];
};
});
};
return Object.setPrototypeOf(self, this.prototype);
};
<!----- HTML ----->
<input id = "text" type = "text" style = "padding: .5em .7em;"/>
Если линия return Object.setPrototypeOf(self, this.prototype);
пропускается выше код будет работать, как ожидалось, вызвав это нравится:
var a = new get("#text");
a.stylise({
backgroundColor: "yellow",
borderRadius: "5px"
});
Однако, Я хочу, чтобы выше работали по телефону это нравится:
get("#text").stylise({
backgroundColor: "yellow",
borderRadius: "5px"
});
Я пытался добиться того, чтобы с помощью Object.setPrototypeOf(self, this.prototype)
, но безуспешно, как я получил следующее сообщение об ошибке в консоли: Object doesn't support property or method 'stylise'
.
Какая часть моего кода вызывает это и как я могу это решить?
Спасибо @ T.J., Ваш ответ отлично работает. Он очень тщательный и дает некоторые приятные альтернативы решению моей проблемы. –