javascript - 函数内的 'this' 不应该指向对象本身吗?

标签 javascript reactjs ecmascript-6 prototype

谢谢大家,这原来是我自己对 ES6 类语法的困惑。

但是我问这个问题是因为我遇到了以下问题。

我正在学习 React,我有以下代码片段。

import React, { Component } from 'react';

class SearchBar extends Component {
constructor(props){
    super(props);
}

render() {
    // console.log(this);
    return <div>
            <input
                onChange={ this.onInputChange }
            />
        </div>;
    }

    onInputChange(event) {
        console.log(this);
    }
}

export default SearchBar;

相当简单,这段代码将生成一个输入组件,当其中的内容发生变化时,我们会注销“this”。

但是,这段代码始终会生成“undefined”。

据我所知,对象子函数中的“this”应该指向对象本身,为什么会发生这种情况?

顺便说一下,主js文件是这样的。

import ReactDOM from 'react-dom';
import React from 'react';

import SearchBar from './components/search_bar';

const API_KEY = 'AIzaSyCdAXs0YXxqGUKjb4sZsmsF_hHq_f3PJmY';

const App = () => {
    return (
            <div>
            <SearchBar />
            </div>
            );
}

ReactDOM.render(<App />, document.querySelector('.container'));

html 看起来像这样

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="/style/style.css">
    <link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/48938155eb24b4ccdde09426066869504c6dab3c/dist/css/bootstrap.min.css">
    <script src="https://maps.googleapis.com/maps/api/js"></script>
  </head>
  <body>
    <div class="container"></div>
  </body>
  <script src="/bundle.js"></script>
</html>

其中bundle.js是带有bable的输出react脚本。

最佳答案

this 关键字由于 prototype 而指向名为 test 的对象。 hello 函数不是与测试对象分离的函数。

如果你问为什么要使用原型(prototype)?

使用原型(prototype)可以更快地创建对象,因为每次创建新对象时不必重新创建该函数。

关于javascript - 函数内的 'this' 不应该指向对象本身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431715/

相关文章:

javascript - 验证 Javascript 中的输入

Javascript删除具有重复属性的数组对象,同时保留最新出现的对象

node.js - 为什么 npm install 会因 node-sass 相关错误而失败?

javascript - ES6 类的 getter 和 setter 实际上是什么?

reactjs - 如何告诉 webpack 开发服务器为任何路由提供 index.html

javascript - (doc && doc.scrollTop || body && body.scrollTop || 0) 返回 'Window' 对象

javascript - 构建一个 :selection selector

reactjs - 火灾事件后 react 测试库未清理

javascript - React 组件自动绑定(bind)

javascript - 从 mongo 返回的对象中过滤/返回单个嵌套对象(findOne)