javascript - 如何将变量传递给对象方法
问题描述
我在 Javascript 中有一个类似于下面的对象
var configs = {
init: function() {
this.var1 = 'variable 1',
this.var2 = 'variable 2'
},
outer: {
inner: {
inner_var1: 'inner variable 1',
inner_var2: 'inner variable 2',
inner_var3: 'inner variable 3',
inner_function: function(item_1, item2) {
console.log(this.var1);
}
}
}
}
var config = Object.create(configs);
config.init();
document.config = config;
我需要将 init 方法中的变量集注入到 outer.inner.inner_function 方法中。但需要注意的是,我不能将更多变量传递到 inner_function 方法参数列表中。(‘inner’对象是第三方插件的一组选项,函数由插件定义,只带两个参数)
如何从内部方法中引用 this.var1?
谢谢
解决方案
对象没有对其包含对象的任何自动引用,因此在inner
对象中没有内置方法可以访问outer
or config
。您需要显式传递对象。
因此,您需要将其定义为:
inner_function: function(config, item_1, item_2) {
console.log(config.var1);
}
并将其称为:
document.config.outer.inner.inner_function(document.config, i1, i2);
如果您希望能够访问容器而不将它们作为参数传递,则需要将它们显式放入对象中。
var configs = {
init: function() {
this.var1 = 'variable 1',
this.var2 = 'variable 2'
},
outer: {
inner: {
inner_var1: 'inner variable 1',
inner_var2: 'inner variable 2',
inner_var3: 'inner variable 3',
inner_function: function(item_1, item2) {
console.log(this.parent.parent.var1);
}
}
}
}
configs.outer.inner.parent = configs.outer;
configs.outer.parent = configs;
推荐阅读
- javascript - 反应导入材料-ui组件不起作用
- python - click.testing.CliRunner 和处理 SIGINT/SIGTERM 信号
- r - 如果 B 列包含字符串,则替换 A 列的值
- c - 使用 binutils 为裸机 ARM 从应用程序代码 (ROM) 创建存根库/对象
- c# - 通过 Ajax 从控制器执行功能
- clickhouse - clickhouse-client - 插入大量数据因内存中断而失败
- flutter - 如何使 Widget 尽可能小(Android 中的 wrap_content)?
- makefile - 将环境变量从 makefile 导出到 shell
- wifi - 安装arch linux后网络连接问题
- javascript - jQuery Javascript 在 MVC 中的表中添加了一个额外的行