var obj = {
id:'998',
name : '我的编号叫:' + this.id,
show:function(){
console.log(this.name)
}
}
obj.show();
需要输出
我的编号叫998
难道是代码写错了?
this.id = 'hello'
var b = '我的编号叫:' + this.id;
console.log(b);
var obj = {
id:'998',
name : '我的编号叫:' + this.id,
show:function(){
console.log(this.name)
}
}
obj.show();
楼主体会一下上面的代码.
就知道为什么在用 对象字面量 创建对象, 在给 name
赋值的时候, 为什么值会不正确了.
看了楼上的答案,自己理解了一下,可能是因为javascript的作用域是通过函数隔离的,而不是大括号,所以直接在对象中调用this.id其实是调用的全局变量,即window的属性,因为之前没有定义,所以自然获取不到,你必须通过函数来隔离出一个作用域。
如果不在全局域修改,根本不可能输出你想要的效果,好么。 因为你在name
里面引用了this.id
。当js运行到这里的时候,你这个obj都没有实例化完,怎么读取这个obj的id? 只能用构造函数实例化这个obj才能达到你的需求。
var obj = {
id:'998',
name : function() {
return '我的编号叫:' + this.id;
},
show:function(){
console.log(this.name());
}
}
改改,再试试看