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);

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

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

这是一个你正在尝试做的事情的工作示例

小提琴: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

相关内容

最新更新