我的第一个Stackoverflow问题(我记得)。经过多年的缺席并尝试使用Node和Javascript,我正在慢慢重新开发。
我希望这很简单,但我看不出我做错了什么。
我有一个相当简单的javascript对象的2个实例。 当我将该对象的一个实例传递给另一个函数时,其他东西就会掉下来。
我第一次引用“自我”值时没关系。
然后我在传入的对象上调用一个函数。
如果我之后再次尝试引用“self”,似乎“self”已被传入的对象覆盖。
这是对象来源:
"use strict";
//simple object
module.exports.SimpleObject = function SimpleObject(inputName) {
try{
var self = this; //closure so we don't lose this reference in callbacks
self.name = inputName;
}
catch(err) {
console.log('Unable to create SimpleObject: '+err);
}
SimpleObject.prototype.getName = function() {
self = this;
return self.name;
}
SimpleObject.prototype.nestedOverwrite = function(anObject) {
self = this;
return "#1 self.name: "+self.name+" ObjectName: "+anObject.getName()+" #2 self.name: "+self.name;
}
return this;
}
这是测试用例:
var testSimpleObjectModule = require('./simpleObject');
var o0 = new testSimpleObjectModule.SimpleObject('test0');
var o1 = new testSimpleObjectModule.SimpleObject('test1');
console.log(o0.nestedOverwrite(o1));
console.log(o1.nestedOverwrite(o0));
这是我得到的输出:
#1 self.name: test0 ObjectName: test1 #2 self.name: test1
#1 self.name: test1 ObjectName: test0 #2 self.name: test0
希望你能在每种情况下看到,第一次调用self.name是正常的,第二次调用失去了上下文。
任何帮助非常感谢!