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变量。请阅读。