如何使用具有多个子原型对象的原型嵌套对象和共享变量? 我是JavaScript中的新手,我想了解继承是如何工作的,我以前使用C++,从主类到子孙很容易处理变量,我尝试了原型方法,但不那么容易。 这是我的密码。。。正确的方法是什么
如何使用具有多个子原型对象的原型嵌套对象和共享变量? 我是JavaScript中的新手,我想了解继承是如何工作的,我以前使用C++,从主类到子孙很容易处理变量,我尝试了原型方法,但不那么容易。 这是我的密码。。。正确的方法是什么,javascript,Javascript,函数main(){ this.name=“主对象,名称”; } main.prototype.LevelA1=函数(){ 返回“LevelA1方法”+this.name;//此级别正确读取this.name } main.prototype.LevelA=函数(){ 这个。a=“laaaa” 返回“LevelA”+this.name;//变量this.name可见 } main.prototype.LevelA.LevelB=函数(){ 返回this.name+“Level B”+this.a/
函数main(){
this.name=“主对象,名称”;
}
main.prototype.LevelA1=函数(){
返回“LevelA1方法”+this.name;//此级别正确读取this.name
}
main.prototype.LevelA=函数(){
这个。a=“laaaa”
返回“LevelA”+this.name;//变量this.name可见
}
main.prototype.LevelA.LevelB=函数(){
返回this.name+“Level B”+this.a//this.name未定义
}
main.prototype.LevelA.LevelB.LevelC=函数(){
返回“C级”+this.name;//this.name不可见且不产生错误
}
main.prototype.LevelA.LevelB.LevelC.LevelD=函数(){
this.bb=“levelD的变量”
返回“Level D”+this.bb+this.name;//this.name不可见并产生错误
}
m=新的主管道();
console.log(m.LevelA());
log(m.LevelA.LevelB());
log(m.LevelA.LevelB.LevelC());
log(m.LevelA.LevelB.LevelC.LevelD());
var cc=新的m.LevelA.LevelB.LevelC.LevelD();
控制台日志(cc.bb)代码>您正在设置新函数,而不是设置新原型,因此每个新函数的词法上下文与Main.prototype
无关
我建议您使用类来处理逻辑
这种方法将“Level”函数封装在从Main
class扩展而来的类中
主类{
构造函数(){
this.name=“主对象,名称”;
}
}
类mainlever扩展了Main{
A1级(){
返回“LevelA1方法”+this.name;//此级别正确读取this.name
}
LevelA(){
这个。a=“laaaa”
返回“LevelA”+this.name;//变量this.name可见
}
B级(){
返回this.name+“Level B”+this.a//this.name未定义
}
C级(){
返回“C级”+this.name;//this.name不可见且不产生错误
}
LevelD(){
this.bb=“levelD的变量”
返回“Level D”+this.bb+this.name;//this.name不可见并产生错误
}
}
设m=新的MainLevel();
console.log(m.LevelA());
console.log(m.LevelB());
console.log(m.LevelC());
console.log(m.LevelD())代码>我认为这与问题或答案没有任何关系,但请注意,我已将您的警报
s替换为日志
s。您好,感谢您的回答,它解决了这个特定问题,但我真正需要的是知道如何制作一个“树”,其中一个主对象可以有多个对象和这些对象子对象等等。。。“所有的孩子都继承他们祖先的财产”。(*使用非全局变量,因此它们不会干扰任何可以使用此对象的脚本)。如何在JavaScript中实现它?