在声明对象时访问属性
Access properties while declaring object?
我试图访问当前值的父值,但没有成功。我有这2个示例javascript代码来演示我的问题:
1)
var x = {
y : {
a : "a",
ab : this.a + "b"
}
};
console.log (x.y);
> Object {
a : a,
ab : undefinedb
}
2)
var x = {
y : {
a : "a",
ab : x.y.a + "b"
}
};
console.log(x.y); // Uncaught TypeError: Cannot read property 'y' of undefined
当使用字面量时,在定义这些变量的语句执行之前不能使用。
一个好的方法是:
var x = {};
x.a = 'hey';
x.b = x.a + ' how you doing?';
alert(x.b);
或者更简洁:
var x = {
a: 'hey'
};
x.b = x.a + ' how you doing?';
alert(x.b);
x.y
和this
未定义,此时它们是undefined
。我的意思是,当您创建一个匿名对象时,它直到关闭}
才真正存在。
所以另一种实现你想要的东西的方法是:
var x = {
y : {a : "a"}
}
x.y.ab = x.y.a + "b"
这样,ab
变量在x
和y
都初始化之后被设置,因此x.y.a
现在被设置。
如果你真的想在初始化期间设置x.y.ab,那么你需要更正式地使用函数和闭包来完成它。如下所示
var x = function(){
this.a = 'foo';
this.b = this.a + ' bar';
}() // Immediate function call so I don't have to create it.
console.log(x.b); // logs 'foo bar'
相关文章:
- HTML5拖放访问属性
- 如何从保存在数组某个位置的JSON行访问属性
- webGL,javascript:尝试访问属性1中超出范围的顶点
- 访问属性的权限被拒绝'filepicker_comm_iframe'
- CanvasJS-访问变量-访问属性toString的权限被拒绝
- 错误:访问属性“”的权限被拒绝;文件”;
- 从javascript访问属性多端数组PHP
- 模块中的访问属性(CommonJS 样式)
- 从控制台 js 访问属性
- 相同的域,但仍收到“访问属性'文档'的权限被拒绝”
- 如何在 Javascript 中从函数本身或其副本访问属性
- 属性 Javascript 的访问属性
- 从 CoffeeScript 中类的属性中的方法访问属性的属性
- 通过 attrs.val 或 attrs.$set(attname, val)访问属性
- 使用 WinJS.Class 和访问属性
- Twitch TV API 访问属性名称值并更新它
- 如何访问属性名称中具有特殊字符的javascript对象的属性
- Cordova-不推荐尝试访问属性'userAgent'在非导航器对象上
- 具有私有方法的JS原型类不访问属性
- iFrame中的SelectionContext-访问属性“getSelection”的权限被拒绝