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; }); }); }; };
原文:http://www.cnblogs.com/skytouchzyt/p/5232735.html