Приведенный выше код реагирования фактически скомпилирован веб-пакетом (я должен был предоставить эту информацию раньше) в:
var App = function (_Component) {
_inherits(App, _Component);
function App() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, App);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = App.__proto__ || Object.getPrototypeOf(App)).call.apply(_ref, [this].concat(args))), _this), _this.state = { name: "Rahul" }, _this.nameChanger = function () {
debugger;
_this.setState({ name: "New Rahul" });
}, _temp), _possibleConstructorReturn(_this, _ret);
}
_createClass(App, [{
key: "render",
value: function render() {
setTimeout(this.nameChanger, 1000);
return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(
"div",
{ className: "App", __source: {
fileName: _jsxFileName,
lineNumber: 17
},
__self: this
},
this.state.name
);
}
}]);
return App;
}(__WEBPACK_IMPORTED_MODULE_0_react__["Component"]);
/* harmony default export */ __webpack_exports__["a"] = (App);
Код в исходном вопросе - это просто исходная карта (включено в настройках инструментов разработчика Chrome). Я не уверен, что веб-пакет является виновником здесь, потому что он создает новое «_this» для хранения текущего контекста, сохраняя оригинальное «this» как есть (чтобы указать на объект окна). Таким образом, когда вы отлаживаете исходную карту, отладчик chrome показывает оригинальное 'this' (окно) в консоли, но выполняет оператор в текущем контексте (_this).