求大神解释js json问题

gg666gg11 2015-12-10 11:20:47
var data = {
name : data.newName.firstName,
newName : {
firstName : "wang"
}
}
为什么上面的代码报错 data is undefined

改成函数就不报错呢 是什么原因?
这个代码不报错:
var data = {
name : data.newName.firstName(),
newName : {
firstName : function(){
return "wang";
}
}
}
...全文
116 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg666gg11 2015-12-10
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
第二个也报错好吧,data都没有定义好你就引用了 var data = { name : function(){return data.newName.firstName}, newName : { firstName : "wang" } }
这样data.name 就是一个函数了 只能data.name()调用 能不能 直接data.name 来调用 data中其他的变量
gg666gg11 2015-12-10
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
第二个也报错好吧,data都没有定义好你就引用了 var data = { name : function(){return data.newName.firstName}, newName : { firstName : "wang" } }
data中的变量用到自身其他的变量 一定要用函数return 才能实现吗
gg666gg11 2015-12-10
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
第二个也报错好吧,data都没有定义好你就引用了 var data = { name : function(){return data.newName.firstName}, newName : { firstName : "wang" } }
name : function(){return data.newName.firstName}, 为什么用函数写就不会有错呢 ?
  • 打赏
  • 举报
回复
第二个也报错好吧,data都没有定义好你就引用了 var data = { name : function(){return data.newName.firstName}, newName : { firstName : "wang" } }
木头海上漂 2015-12-10
  • 打赏
  • 举报
回复
对象的定义是一层一层的
天际的海浪 2015-12-10
  • 打赏
  • 举报
回复
var data = {
      newName : {
             firstName :  "wang"
      }
}
data.name = data.newName.firstName
  • 打赏
  • 举报
回复
引用 2 楼 dannysg 的回复:
[quote=引用 1 楼 showbo 的回复:] 第二个也报错好吧,data都没有定义好你就引用了 var data = { name : function(){return data.newName.firstName}, newName : { firstName : "wang" } }
name : function(){return data.newName.firstName}, 为什么用函数写就不会有错呢 ?[/quote] 定义为函数name就是一个函数而已,没有引用到data变量的相关属性,只有执行的时候才会引用到对象(除非引用到不存在的对象的属性才会报错),此时你data变量就已经定义好了 如果浏览器支持es6标准,我记得有个proxy对象拦截器,可以通过拦截器返回需要的属性,连对象名都不需要定义 不过浏览器大部分都没还实现

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧