JavaScript - 尝试从另一个对象内部访问对象方法获取未定义的错误

时间:2013-09-12 21:51:53

标签: javascript

过去几个月我一直在研究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);

返回“undefined”。我有两个问题:第一个是“为什么?”第二个是“我怎么能让这个工作?”我希望能够从testobj2中访问testobj1的答案方法。有办法吗?任何能够教育我这里我不理解的原则的链接都非常感谢。

PS - 我尽职尽责地搜索谷歌和本网站以获得我的问题的答案。如果我发现它我不明白我有,所以欢迎任何新的解释。

1 个答案:

答案 0 :(得分: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 Objects有很好的入门读物,可以帮助你熟悉基础知识。

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

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