Beginning of Everything 起点
“hust> rm -rf”, 了结过往, 面向未来, 是我为HUST计算机学院设计的毕业衫图案
“hust> rm -rf”, 了结过往, 面向未来, 是我为HUST计算机学院设计的毕业衫图案
我们在实现一个React
组件时可以选择两种编码方式,第一种是使用JSX
编写:
1 | class Hello extends Component { |
第二种是直接使用React.createElement
编写:
1 | class Hello extends Component { |
实际上,上面两种写法是等价的,JSX
只是为 React.createElement(component, props, ...children)
方法提供的语法糖。也就是说所有的JSX
代码最后都会转换成React.createElement(...)
,Babel
帮助我们完成了这个转换的过程。
babel
在编译时会判断JSX
中组件的首字母,当首字母为小写时,其被认定为原生DOM
标签,createElement
的第一个变量被编译为字符串;当首字母为大写时,其被认定为自定义组件,createElement
的第一个变量被编译为对象;Webpack是基于模块化打包的工具:
1 | function Foo (a){ |
1 | function Bar (a,b){ |
- 为实例添加私有属性;
- 让实例可以访问到构造函数原型所在原型链上的属性;
- 如果构造函数返回的不是引用类型,则返回自己创建的 obj;
1 | function myNew (func,...arg) { |
1 | var Item = { |
学习来源: 深入理解JS中的对象(三):class 的工作原理 - forcheng - 博客园
学习方法: 在babelijc网站 利用ES6转ES5原码功能, 阅读class原码.