调用DataClass的createData方法后获取length报错的问题及解决
解决createData方法未返回值导致console.log(testA.length)报错的问题
嘿,我一眼就瞅出你这儿的问题了——你的createData方法漏掉了返回语句!
当你实例化DataClass并调用createData方法时,因为方法没有返回任何值,你赋值得到的testA其实是undefined。这时候你去访问undefined的length属性,浏览器或者Node.js肯定会抛出错误,毕竟undefined根本没有这个属性嘛。
修复后的代码
只需要在createData方法里加上return chartData就行,把处理好的数组返回出去:
class DataClass{ constructor(lib, zero){ this.lib = lib; this.zero = zero; } createData(backendData) { const test = backendData[0]['data'].points const chartData = test.map((rf) => { return new DataClass(rf.lib, rf.zero) }) // 补上return语句,返回处理后的数组 return chartData } }
测试验证
现在你再运行下面的代码,console.log(testA.length)就能正常输出1了:
const testData = [{ 'data':{ 'points':[{ 'lib':0.01, 'zero':2.00 }] } }] const dataInstance = new DataClass() const testA = dataInstance.createData(testData) console.log(testA.length) // 输出:1
这种小疏忽其实挺常见的,写方法的时候很容易专注于处理逻辑而忘记返回结果,下次记得多检查一下方法的返回值哦!
内容的提问来源于stack exchange,提问作者Noah Tony
相关产品推荐
相关产品推荐

