尽管在console.log中显示了它的存在,但无法访问对象datamember。尝试访问返回undefined

时间:2018-06-13 06:18:18

标签: javascript arrays function object

我有一组构造函数的匿名函数,它们接受一个参数,然后用它来构建一个var。

template.foreach( template => template = new template(model))

我遍历数组并使用new关键字将每个函数构造成一个对象。

typeof

这似乎有效,因为当我在console.log时,它将模板显示为具有数据成员this.html的对象列表,并且其填充正确。

但是,当我尝试访问template [0] .html时,它返回undefined。

当我对列表中的元素执行grunt serve时它表示功能,但浏览器将其显示为对象,最重要的是当我执行模板[0] .html时,尽管显示它,但它返回为未定义我控制台记录列表。

2 个答案:

答案 0 :(得分:0)

  1. 应该是forEach()而不是foreach()

  2. 你应该总是在你的功能中返回一些东西。

  3. 使用this这是非常奇怪的方式,因为当您在数组中存储函数时,this引用您调用此函数的对象。

答案 1 :(得分:0)

关键是forEach不会改变正在迭代的数组,它只是迭代它。如果要返回已创建对象的数组,可以使用其他函数,如map:

FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Set env
ENV PORT 3000

# Install app dependencies
ADD package.json /tmp/package.json
RUN cd /tmp && npm install

# Bundle app source
ADD . /usr/src/app

# Open port to access server
EXPOSE $PORT
# Execute as bash script to pass along env variables
CMD npm start

现在您可以访问myObjectArray [0] .html

请注意myObjectArray是一个新数组,模板不会更改。

顺便说一句,拥有一个名为模板的变量来保存一个数组并不是一个好习惯,最好称之为templateArray或模板(明确表示它是一个数组)