Использование полей объекта в JS? Доброго времени суток, при изучении и углублении в JS решил написать калькулятор, правда не очень сложный, но все же и столкнулся с проблемой: Uncaught ReferenceError: inputData is not defined.// The main JS File 'use strict'; var action = { add: function(a, b) { return a + b; }, substract: function(a, b){ return a - b; }, multiply: function(a, b){ return a * b; }, devide: function(a, b) { return a / b; } } var tablo = { statusLine: " ", tabloHtml: document.getElementById("calculator-result"), show: function(){ tabloHtml.innerHTML = statusLine; }, setLine: function(str){ statusLine = str; this.show(); }, } var calculator = { calc_action: action, calc_tablo: tablo, inputData: 0, action: [], digit: [], addToData: function(value){ this.inputData += parseFloat(value); this.calc_tablo.setLine(inputData); this.logArray("Add to Data:"); }, addData: function(value){ this.inputData = parseFloat(value); this.calc_tablo.setLine(inputData); this.logArray("Add Data:"); }, clearData: function(){ this.inputData = 0; }, logArray: function(str){ console.log(str); console.log(this.action); console.log(this.digit); }, } // Listen Digit button var listen = function (){ var buttonName = this.getAttribute("class"); calculator.addToData(this.innerHTML); } window.onload = function(){ var buttons = document.querySelectorAll('button') for (var i = 0; i < buttons.length; i++){ buttons[i].addEventListener('click', listen, false); } } Буду признателен за объяснение почему, и как следует исправить.
Ошибка "Uncaught ReferenceError: inputData is not defined" возникает потому, что внутри функции addToData вы обращаетесь к переменной inputData, не указывая явно, что это поле объекта calculator.
Чтобы исправить эту ошибку, вам нужно использовать ключевое слово this, чтобы указать, что inputData является полем объекта calculator. Вместо inputData используйте this.inputData.
Ошибка "Uncaught ReferenceError: inputData is not defined" возникает потому, что внутри функции addToData вы обращаетесь к переменной inputData, не указывая явно, что это поле объекта calculator.
Чтобы исправить эту ошибку, вам нужно использовать ключевое слово this, чтобы указать, что inputData является полем объекта calculator. Вместо inputData используйте this.inputData.
Пример исправленного кода:
addToData: function(value){this.inputData += parseFloat(value);
this.calc_tablo.setLine(this.inputData);
this.logArray("Add to Data:");
},
addData: function(value){
this.inputData = parseFloat(value);
this.calc_tablo.setLine(this.inputData);
this.logArray("Add Data:");
},
Также, в функции addData, учитывайте, что вы должны указывать this.inputData, а не просто inputData.
После внесения этих изменений, ошибка должна исчезнуть, и код должен работать правильно.