过去几个月我一直在研究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 - 我尽职尽责地搜索谷歌和本网站以获得我的问题的答案。如果我发现它我不明白我有,所以欢迎任何新的解释。
答案 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