在过去的几个月里,我一直在研究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