繁体   English   中英

无法访问javascript变量中的对象属性

[英]Can't access object property in javascript variable

我努力争取了一段时间。 这真是奇怪。 我想访问一个对象属性,但这总是抛出错误:

TypeError:无法读取未定义的属性模板

但是我的应用程序正常工作。 如果无法访问未定义的模板,则只有通知输出

 //this is my object variabel var login = {}; login.data = { checkInput : formValidation, userSchema : User, template : 'pages/users/login', } // so I add new method which I call in different files login.header = async(req, res, next) => { /// in this section function I want to read property of template but it always return undefined try { // I have some code with read databases here //some data i want to render var data = {}; res.render(this.data.template,data); // I've been also trying another way. var template = login.data.template !== undefined ? 'page/users/login' : login.data.template; res.render(login.data.template, data); // both of above always return output, but can't read template of undefined } catch(e) { throw new Error(e); } } 

这是因为你使用的失去结合箭头功能login (在this你所访问的访问尝试login对象)。 使用常规的ES5功能。

login.header = async function(req, res, next) {...};

如在文档中找到的:

箭头函数表达式在语法上是常规函数表达式的紧凑选择,尽管没有与thisargumentssupernew.target关键字的绑定。 箭头函数表达式不适合用作方法,并且不能用作构造函数。

我一直在尝试使用没有数组功能的属性进行访问

 var login = {} login.data = { template : 'admin/pages/' body : {} }; login.getViews = function(req, res, next) { // it'l throw an error res.render(this.data.template, this.data.body); // than i try with another way, it works res.render(login.data.template, login.data.body); } 
那么,即使我不使用任何行功能,为什么也无法使用此属性访问?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM