Mengyun Lee

2 posts

prototype/__proto__ 区别

即上篇文章后,又看到了prototype和__proto__的这个部分。所以再写一篇来梳理这两兄弟。 prototype(显式原型):几乎所有的函数(除了一些内建函数)都有一个名为prototype的属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。 作用:用来实现基于原型的继承与属性的共享。_proto_(隐式原型):对象具有属性_proto_,可称为隐式原型,可用Object.getPrototypeOf()方法获得。它指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。 作用:构成原型链,同样用于实现基于原型的继承。举个例子,当访问obj这个对象中的x属性时,如果在obj中找不到,那么就会沿着__proto__依次查找。

Require/Import 区别

老是要忘记 Require 和 Import 的区别,究其原因还是自己没有真正掌握好。所以索性花时间去好好搞清楚,这样也避免一遍又一遍去查了。 require / exports :遵循 CommonJS/AMD,只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。 用法只有以下三种简单的写法: const fs = require('fs') exports.fs = fs module.exports = fs import / export:遵循 ES6 规范,支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。 写法就比较多种多样: import fs from 'fs' import {default as fs}