Довольно долгий вопрос. Но в основном это описывается в значительной степени для описания того, что я хочу. Этот код здесь для создания любого объекта according to user input
для ввода текстового поля. Если я хочу создать Number, String или Object, i просто нужно написать Number/String/Object в text field
.Динамические динамические объекты JavaScript на языке
кнопка была введена, чтобы позвонить createObj.getObjName и получить ввод из текста field.It пытается соответствовать входу для любых три типа объекта, которые являются Number/String/Object.Then она вызывает функцию Его [problem lies here i think]
, который перебирает **list_keys array**
с использованием Array.prototype.some
, который создается с использованием объекта json, который содержит другое имя объекта. Они представляют собой assigned with objects
, созданные с использованием new keyword
.
проблема заключается в вызове функции проверки я попытался вынудило THIS keyword
указать createObj
объекта внутри него вместо окна object.I пытался console.log(this)
это дает мне этот выход, который является input html button element
.
<input type='button' id='btn' value="create">
Но я хочу, чтобы ЭТО относилось к самому createObj. Почему это относится к элементу HTML? Как я могу это решить?
Полный код:
(function() {
var list = {
"Number": new Number(),
"String": new String(),
"Object": new Object(),
"Array": new Array()
}
var list_keys = Object.keys(list);
var createObj = {
re: null,
text: null,
match: null,
newObj: null,
getObjName: function() {
this.re = /Number|Object|String/;
this.text = document.getElementById('text').value;
this.match = this.text.match(this.re);
var bool = check.call(this);
if (bool) {
this.makeObj(list.this.match[0]);
}
},
makeObj: function(obj) {
this.newObj = obj;
}
};
function check() {
console.log(this);
return list_keys.some(function(el, indx, arr) {
return this.match[0] === el;
});
}
document.getElementById('btn').addEventListener('click', createObj.getObjName);
})();
почему вниз голосовать этот question.Is вопрос не ясный :( –