var DBProcessor = function(name){this.name=name;};
DBProcessor.prototype.CallBack = function(err, d){
if (err) {
console.log("writeHosts. Error:", JSON.stringify(err, null, 2));
} else {
console.log(".........");
console.log(this.name); // >>>> UNDEFINED
console.log(".........");
}
}
var DBP = new DBProcessor("Hosts");
function writeHosts(){
...
..
db.batchWriteItem(param, DBP.CallBack);}
我怎样才能在DBP中获得一个变量"这个"正在失去范围,我没有影响如何调用DBP.CallBack
var doc = require('dynamodb-doc');
var db = new doc.DynamoDB();
所以我不知道如何使用apply()或call()
答案 0 :(得分:1)
如果你对它的调用没有影响,你就不能将它作为原型函数。在构造函数中bind
,或者在构造函数中将其定义为闭包,并使用旧的var _this = this;
技巧来保持对正确的this
的引用。
答案 1 :(得分:0)
Hmmmm 目前我有这个,它的工作原理 如果有任何言论反对这个让我现在将google" bind"同时
function DBProcessor(_this){
_this = this;
this.b = 1;
this.CallBack = function(err, d){
if (err) {
console.log("writeHosts. Error:", JSON.stringify(err, null, 2));
} else {
console.log(_this.a);
console.log(_this.b);
console.log(".........");
}
};
return this;}
var DBP = new DBProcessor();
DBP.a = 2;
这里有bind
function DBProcessor(){
return {
a:1,
_CallBack: function (err, d){
if (err) {
console.log("writeHosts. Error:", JSON.stringify(err, null, 2));
} else {
console.log(this.a);
console.log(this.b);
console.log(".........");
}
}
};
}
var DBP = new DBProcessor();
DBP.b = 2;
DBP.CallBack = DBP._CallBack.bind(DBP);