class funs
{ public $scope: IBarPadScope; constructor($scope: IBarPadScope) { this.$scope = $scope; }
public createLoadPhoneOrders(startTime?: string): () => void {
return () => {
startTime = startTime || moment().format("YYYY-MM-DD 00:00:00");
this.$scope.socket.emit('command',
{
command: 'query',
data: {
Node: this.$scope.sys.node,
CreatedTime: { '$gte': startTime }
},
document:'PhoneOrders'
},
(err, r: PhoneOrder[]) => {
this.$scope.$apply(() =>
{
this.$scope.allPhoneOrders = r;
});
});
};
}
}
可以看到多级子函数调用 this一直指向的是funs的实例
看看编译出来的js的代码
funs.prototype.createLoadPhoneOrders = function (startTime) {
var _this = this;
return function () {
startTime = startTime || moment().format("YYYY-MM-DD 00:00:00");
_this.$scope.socket.emit('command', {
command: 'query',
data: {
Node: _this.$scope.sys.node,
CreatedTime: { '$gte': startTime }
},
document: 'PhoneOrders'
}, function (err, r) {
_this.$scope.$apply(function () {
_this.$scope.allPhoneOrders = r;
});
});
};
};