【发布时间】:2018-06-23 02:56:23
【问题描述】:
我在运行和理解 javascript 中的类时遇到问题。我正在用我制作的一个简单的应用程序对此进行试验。它的最终目标只是从textarea 中获取名称,将其存储在一个数组中,然后对其执行操作,例如将它们显示到屏幕上或随机播放它们。为此,我做了 2 节课。一个用于将名称存储到数组中,然后另一个从此类扩展以操作数组 - 只是为了组织。这是我的代码:
将名称存储到数组
import $ from 'jquery';
class SaveInput {
// dom selection usually and firing events when a page loads.
constructor(){
this.mainText = $('.main-text');
this.names = [];
this.events();
}
//events to watch for such as click
events() {
// save names to array, no submit button
this.mainText.blur(this.saveNameIndex.bind(this));
}
// methods to be called from events
// save names without submitting
saveNameIndex() {
let namesResult = this.names = this.mainText.val().split('\n');
return namesResult;
}
}
export default SaveInput;
操作数组
import $ from 'jquery';
import SaveInput from './SaveInput';
class Display extends SaveInput {
// dom selection usually and firing events when a page loads.
constructor(names){
super(names);
this.h1= $('h1');
this.events();
}
//events to watch for such as click
events(){
this.h1.click(this.log.bind(this));
}
// methods to be called from events
//display images with names
log () {
console.log('test');
}
}
export default Display;
我做什么并不重要,正如您从我的第二堂课中看到的那样,我只是想通过单击h1 标记来控制台记录一些文本来进行测试。应用加载时我总是遇到同样的错误:
App.js:10522 Uncaught TypeError: Cannot read property 'click' of undefined
at Display.events (App.js:10522)
at Display.SaveInput (App.js:96)
at new Display (App.js:10509)
at Object.defineProperty.value (App.js:10412)
at __webpack_require__ (App.js:20)
at Object.defineProperty.value (App.js:63)
at App.js:66
我想要从saveInput 类中获得的唯一东西是名称数组,因此我可以将它传递下去,并且在我扩展该类时似乎存在一些冲突。我错过了什么?
【问题讨论】:
标签: javascript jquery arrays class ecmascript-6