0

过去几个月我一直在研究 JavaScript,我正在尝试更深入地了解对象。以下问题很适合我。而是把它拼出来,我只给出一个代码示例:

var Obj1 = function (){
    this.getResult = function() {
            var result = 5*5;
        return result;
        };
    this.answer = this.getResult();
};

var Obj2 = function() {
       var x = obj1.answer;

};

var testobj1 = new Obj1();
var testobj2 = new Obj2();

console.log(testobj2.x);

这将返回“未定义”。我有两个问题:第一个是“为什么?” 第二个是“我怎样才能做到这一点?” 我希望能够从 testobj2 内部访问 testobj1 的 answer 方法。有办法吗?非常感谢任何可以教育我了解我在这里不理解的原则的链接。

PS - 我做了尽职调查搜索谷歌和这个网站来回答我的问题。如果我发现它,我不明白我有,所以欢迎任何新的解释。

4

1 回答 1

0

这是您正在尝试做的一个工作示例

小提琴:http: //jsfiddle.net/yjTXK/1/

var Obj1 = function (){
    this.getResult = function() {
        var result = 5*5;
        return result;
     };

    this.answer = this.getResult();
};

var Obj2 = function(obj1) {
    //assign the answer to this.x, var doesn't 'live' outside of the constructor
    this.x = obj1.answer;
};

//you make an instance of obj1, this is different from the 'class' Obj1
var testobj1 = new Obj1();

//then you pass that instance into an Obj2, so it can be consumed
var testobj2 = new Obj2(testobj1);

console.log(testobj2.x);

W3Schools 对Javascript 对象有很好的入门知识,它应该让您熟悉基础知识。

更新,为什么将 Obj1 的实例传递给 Obj2?

您需要为第二个实例提供对第一个实例的引用。创建第一个实例后,您需要让第二个对象知道它,这就是您传递它的原因。这样,您可以拥有一大堆Obj1实例,并准确指定要传递给哪个实例Obj2

于 2013-09-12T21:55:32.613 回答