Javascript 多维对象
如何制作多维对象Javascript 多维对象,javascript,Javascript,如何制作多维对象 function tst(){ this.a = function(){ alert(this.b.abc.c()); }; this.b = function(){ }; } var obj = new tst(); obj.b.abc = function(){ this.c = function(){ return 'hello world'; }; }; obj.a(); 在这里似乎
function tst(){
this.a = function(){
alert(this.b.abc.c());
};
this.b = function(){
};
}
var obj = new tst();
obj.b.abc = function(){
this.c = function(){
return 'hello world';
};
};
obj.a();
在这里似乎工作得很好:
此代码存在问题:
obj.b.abc = function(){
this.c = function(){
return 'hello world';
};
};
调用abc
函数不会创建obj.b.abc.c
函数,而是创建obj.b.c
函数。因此,this.b.abc.c()
抛出一个错误,因为这样的函数不存在
这将使它发挥作用:
function tst() {
this.a = function() {
alert( this.b.abc.c() );
};
this.b = function() {
};
}
var obj = new tst();
obj.b.abc = function() {
this.abc.c = function() { // <--- NEW
return 'hello world';
};
};
obj.b.abc(); // <--- NEW
obj.a();
函数tst(){
this.a=函数(){
警报(this.b.abc.c());
};
this.b=函数(){
};
}
var obj=新的tst();
obj.b.abc=函数(){
这个.abc.c=function(){//…取决于您如何调用abc
函数…编辑了我的问题..如果您想从自身调用它呢?@sime那么您如何调用它呢?顺便说一句,第二行有一个输入错误:function
和警报()未使用正确关闭)
如何避免在obj.b.abc方法中写入this.abc而不是this?@clarkk您可以使用参数。被调用方引用abc
:参数。被调用方.c=函数(){…
。请看这里:但是,我不确定是否使用参数。被调用方
将是一个好主意…或者这样做是不好的做法我的意思是..创建具有更多“维度”的对象是不好的做法吗?@clarkk不,当然不是。多个级别都可以。创建此类对象的模式可能更好,也可能更糟。
function tst() {
this.a = function() {
alert( this.b.abc.c() );
};
this.b = function() {
};
}
var obj = new tst();
obj.b.abc = function() {
this.abc.c = function() { // <--- NEW
return 'hello world';
};
};
obj.b.abc(); // <--- NEW
obj.a();