Javascript 获取另一个类中某个类的实例
编辑:我发现我的代码有问题-请参阅我的答案以获得解决方案 只是一个简单的问题: 我想在另一个类中访问一个类的实例-我怎么做? 下面是我的问题的一个快速示例:Javascript 获取另一个类中某个类的实例,javascript,class,instance,Javascript,Class,Instance,编辑:我发现我的代码有问题-请参阅我的答案以获得解决方案 只是一个简单的问题: 我想在另一个类中访问一个类的实例-我怎么做? 下面是我的问题的一个快速示例: var instanceA = new ClassA(); function ClassA(){ var instanceB = null; this.start = function(){ instanceB = new ClassB(); instanceB.start();
var instanceA = new ClassA();
function ClassA(){
var instanceB = null;
this.start = function(){
instanceB = new ClassB();
instanceB.start();
}
this.action = function(){
console.log('works not');
}
}
function ClassB(){
this.start = function(){
instanceA.action(); // this throws: Uncaught ReferenceError: instacneA is not defined
}
}
将其传递给函数:
this.start = function(instA) { ... }
instanceB.start(instanceA);
或者,如果要在多个方法中重用此实例,请将其传递给构造函数
function ClassB(instA) {
this.instanceA = instA;
this.start = function() { this.instanceA.action(); }
}
另外,全局变量是邪恶的(大多数时候)<代码>变量instanceA=…创建一个。所以,如果它只是一个快速的原型-它是好的。如果没有-尝试避免这种情况,尽管在调用instanceA.start()时您的示例似乎运行良好 最好将ClassA(
this
)的实例传递给ClassB,而不是依赖全局:
function ClassA(){
var instanceB = null;
var self = this; // Save instance of ClassA
this.start = function(){
instanceB = new ClassB();
instanceB.start(self); // Pass to ClassB
}
this.action = function(){
console.log('works not');
}
}
function ClassB(){
this.start = function(a){ // Use passed in instance of ClassA
a.action();
}
}
好的,对不起-我发现了问题: 我使用jquery,并在$(document).ready函数中创建了instanceA变量 当我在$(document.ready)函数之前创建instanceA时,它会工作
所以,即使我解决了我的问题,我也不明白。有人能给我解释一下为什么我的第一种方法不起作用吗?当你对ClassB进行实例化时,你有没有试着把
这个(ClassA的实例)传递给ClassB?新的ClassB().start()代码>工作正常。工作正常-问题是在jQuery$(document).ready函数中设置了instanceA变量。请阅读。