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原码.