var b={a:12,c:function(){return this.a}};
alert(b.c());
那为什么这样的就可以?this指向b对象呢?
var b={a:12,c:a};alert(b.c) 这个不对是因为a是b里面的属性,不是变量,不能给c赋值,就像你的css中的background的值不能赋值给width一样。
var b={a:12,c:this.a};alert(b.c) 这里面的this是当前对象,如果页面上只有这一段脚本就是指window
b={a:12,c:b.a}; 这个不对的原因和第一条一样
一,你知道的就不说了;
二,首先让你看看JSON的正确写法,如下
var obj={ "A":12, "B":10 };
也就是说类似“A”,“B”是需要有引号(当然没有引号也可以运行)。但是我觉得如果一接触json就是这种写法,那么今天你就不会有这样的疑问了。
接着说你写的第二个例子,这里this指的是window对象,所以A是undefined。
三,从语法上就是错的。
这边的this 其实是window,全局中没有定义a,所以你的第2个语句显示的是undefined
同一楼,c要引用a只能作为函数在里面引用:
var b={a:12,c:function(){return this.a;}};
b.c();
this是指向代码调用/执行者,上面this指向b所以能取到b的a。
你而的代码执行者是window所以this也是window。
this是指向代码调用/执行者,上面this指向b所以能取到b的a。