Javascript对象文字,如何使用“this”来引用对象中的变量
Javascript object literal, how to use 'this' to reference a variable in the object
我正在可能的重复项:
"这个"里面的对象
尝试为我正在处理的 jQuery 插件的几个默认选项制作一个对象文字:
var defaults = {
r: 5,
top: this.r,
bottom: this.r,
topleft: this.top,
topright: this.top,
bottomleft: this.bottom,
bottomright: this.bottom
};
当我引用defaults.top
时,它是undefined
我能做些什么来做到这一点?或者也许是另一种方法?我需要它是一个对象文字。
添加:
它是(default
对象),正如你所看到的,它向下层叠的方式,旨在成为一种短手技术。例如,如果你想定义所有角都相同,你会使用{r: 5}
但如果你想让顶部和底部再次不同{top: 5, bottom: 1}
,单独{topleft: 5, topright:2, bottomleft: 3, bottomright:19 }
我很抱歉没有说清楚,但非常感谢你的回答。
回答:这就是我最终所做的
if(o.topleft == undefined || o.topright == undefined || o.bottomleft == undefined || o.bottomright == undefined){
if(o.top == undefined || o.bottom == undefined){
if(o.r == undefined){
o.topleft = 5;
o.topright = 5;
o.bottomleft = 5;
o.bottomright = 5;
}else{
o.topleft = o.r;
o.topright = o.r;
o.bottomleft = o.r;
o.bottomright = o.r;
}
}
else{
o.topleft = o.top;
o.topright = o.top;
o.bottomleft = o.bottom;
o.bottomright = o.bottom;
}
}
晚餐很草率,但嘿,它奏效了!谢谢你的帮助!我选择了答案,因为这个解释导致我这样做!
"当我引用
defaults.top
时,它是undefined
"
这是因为this
不引用您正在创建的对象,而是代码运行的任何范围的this
。
文本语法不允许通过引用同一对象中的其他属性来设置值 - 该对象尚不存在。可以引用在对象文本之前声明的其他变量或函数。因此,如果您需要所有属性都像您的示例中一样相同,那么您可以这样做:
var val = 5,
defaults = {
r: val,
top: val,
bottom: val,
topleft: val,
topright: val,
bottomleft: val,
bottomright: val
};
或者使用对象文本创建一些属性,然后设置其余属性:
var defaults = {
r : 5
};
defaults.top = defaults.bottom = defaults.r;
defaults.topleft = defaults.topright = defaults.top;
// etc
显然,后者更适合将某些属性设置为一个值,将其他属性设置为另一个值。(尽管在您的示例中,所有属性都是相同的。
无论哪种方式,最终都会为您提供相同的对象(对象文字只是创建对象的快捷方式)。
"我希望它足够简单,可以做这样的事情
$(selector).myPlugin({r:10});
或$(selector).myPlugin({top:10, bottom: 5});
好吧,您仍然可以使用对象文字作为参数来调用插件。但是defaults
对象(我假设是在插件中定义的)可以使用其他技术定义。
- 如何使用object.assign()从其他对象引用基本对象属性
- 返回 JavaScript 类值而不是对象引用
- Facebook:当发布期望对象引用时显示打开的图形对话框
- Javascript-如何从字符串/对象引用回调
- 将其用于对象引用
- 如何将对象引用传递到 mootools 中另一个对象的构造函数中
- Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么
- 在 Jquery 中,我可以存储对象引用并在以后使用它吗?
- 将对象函数传递给请求动画帧时丢失对象引用
- JavaScript ecma6中的对象引用
- 在JSON中存储对象引用
- 为什么可以在内部函数成员中访问对象引用,而不能在内部属性成员中访问
- 对象引用的隐式传递是如何工作的
- 按对象的 ID 删除对选定对象的对象引用
- 在调用的函数中使用对象引用(this)
- 如何在testcomplete+js中获取对象引用
- 在Angularjs服务中为返回对象引用的http请求提供的数据构建简单的缓存
- JavaScript对象引用
- 对象引用未设置为行中的对象的实例,如果 (!string.IsNullOrEmpty(tdcd.文本)&&
- 如何在使用声明式 Dojo 时获取对象引用