Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问javascript变量中的对象属性_Javascript_Node.js_Object_Ecmascript 6 - Fatal编程技术网

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

无法访问javascript变量中的对象属性,javascript,node.js,object,ecmascript-6,Javascript,Node.js,Object,Ecmascript 6,我挣扎了一段时间寻求帮助。这真奇怪。我想访问对象属性,但这始终会引发错误: TypeError:无法读取未定义的属性模板 但我的应用程序工作正常。如果无法访问未定义的模板,则会有通知输出 //这是我的目标 var login={}; login.data={ checkInput:formValidation, userSchema:User, 模板:“页面/用户/登录”, } //所以我添加了新的方法,我在不同的文件中调用它 login.header=asyncreq,res,next=>{

我挣扎了一段时间寻求帮助。这真奇怪。我想访问对象属性,但这始终会引发错误:

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

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

//这是我的目标 var login={}; login.data={ checkInput:formValidation, userSchema:User, 模板:“页面/用户/登录”, } //所以我添加了新的方法,我在不同的文件中调用它 login.header=asyncreq,res,next=>{ ///在这个部分函数中,我想读取模板的属性,但它总是返回未定义的 试一试{ //我这里有一些读取数据库的代码 //我想渲染一些数据 变量数据={}; res.renderthis.data.template,数据; //我也在尝试另一种方法。 var template=login.data.template!==未定义?“页面/用户/登录”:login.data.template; res.renderlogin.data.template,数据; //以上两种方法都会返回输出,但无法读取未定义的模板 }抓住{ 抛出新的错误; }
} 这是因为您正在使用一个arrow函数,该函数将丢失登录的绑定。您正在访问的是一个试图访问登录对象的函数。使用常规ES5功能

login.header = async function(req, res, next) {...};
如图所示:

arrow函数表达式是正则表达式的一种语法紧凑的替代方法,尽管它没有自己对、、或关键字的绑定。箭头函数表达式不适合用作方法,并且不能用作构造函数


我一直在尝试使用不带数组函数的属性进行访问

var login={} login.data={ 模板:“admin/pages/” 正文:{} }; login.getViews=functionreq,res,next{ //它会抛出一个错误 res.renderthis.data.template,this.data.body; //如果我尝试另一种方法,它会起作用 res.renderlogin.data.template,login.data.body;
}等等,伙计。箭头函数删除了此属性,但我仍然无法使用**login.data.template**???它仍然会让我产生类型错误,为什么要调用res.render两次呢?每个请求只能发送一个响应。这只是我使用的另一种方式。是的,我用一个接一个的。举个例子,如果我使用双向尝试这个错误,不要添加代码作为例子。理想情况下,显示实际出错的代码,如。显示两个渲染是一个有保证的问题,所以如果您在实际代码中没有使用它,也不要在示例代码中显示它。好吧,这是非功能性的错误演示代码。如果你想得到最好的帮助,就展示你的真实代码。我解释得很清楚。。呼呼呼。