如何使用'这'嵌套对象中
How to use 'this' in nested object?
我正在LayoutConstructor对象中创建一些方法:
function LayoutConstructor() {};
LayoutConstructor = {
buildNewsroom: function() {
this.newsroom.buildSidebar();
},
newsroom: {
buildSidebar: function() {
//some code...
//get the error: Cannot read property 'buildBoxWrapper' of undefined
this.general.buildBoxWrapper($(".sidebar .box-wrapper"));
}
},
general: {
// Build the box-wrapper
buildBoxWrapper: function(boxWrapper) {
//some code...
}
}
}
然而,我得到了一个错误:
"无法读取未定义"的属性"buildBoxWrapper"
当我尝试运行方法CCD_ 1时。我还设置了构造函数:
function LayoutConstructor() {var self = this;}
并修改CCD_ 2方法:
buildSidebar: function(){
self.general.buildBoxWrapper($(".sidebar .box-wrapper"));
}
但这似乎于事无补。
"this"是如何定义的,以及如何访问嵌套方法中的其他方法
如果不这样做。self
技术是一个闭包,它应该在被使用的函数中定义。例如:
function myFunc() {
var self = this;
anotherFuncWithCallback( function() { self.myValue = this.valueFromOtherContext; });
}
您无法按照自己想要的方式将this
绑定到方法。如果您有绑定问题,您需要更改方法调用:
myObject.myMethod.bind(myObject)("parameters");
它将在调用方法之前将正确的对象绑定到this
。
顺便说一句,你可以把你的类定义改为:
var LayoutConstructor = function() {
var self = this;
this.newsroom = {
buildSidebar: function() {
//some code...
//get the error: Cannot read property 'buildBoxWrapper' of undefined
self.general.buildBoxWrapper($(".sidebar .box-wrapper"));
}
};
this.buildNewsroom = function() {
this.newsroom.buildSidebar();
};
this.general = {
// Build the box-wrapper
buildBoxWrapper: function(boxWrapper) {
//some code...
}
}
}
相关文章:
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 如何打印嵌套对象的所有值
- 设置嵌套对象属性的更好方法
- 访问嵌套JSON对象的键,其中键是动态的
- 嵌套对象结构
- 如何递归地获取嵌套对象中所有子对象的列表
- 更改嵌套对象的父子相关id
- Node.js:用作对象嵌套元素名称的变量
- Sailsjs创建对象-嵌套创建
- Jquery $.ajax 获取响应与将“this”对象嵌套传递到“success”回调函数冲突
- 从嵌套属性数组中获取对象嵌套值
- 将对象嵌套在另一个数组中
- javascript对象嵌套回调
- 当被引用对象嵌套在ExtJS 5.0.0中时,如何读取它
- 如何在不知道其位置的情况下删除Mongo对象(嵌套的2个数组)
- 排序嵌套在对象中的数组,该对象嵌套在另一个对象中
- Javascript对象嵌套
- 在Angular中创建多维/嵌套对象(嵌套forEach循环)
- 仅列出jquery中包含json对象嵌套的所有键
- 如何将一个javascript对象嵌套在另一个对象中