获得徽章 16
- 实现一个new 关键字
// 构造函数
function Foo(name, age){
this.name = name;
this.age = age;
}
// 实现一个new操作符
function myNew(fn, ...args){
let obj = {}; // 1.创建一个对象
Object.setPrototypeOf(obj, fn.prototype);// 2.把对象的原型__proto__指向构造函数的prototype属性是
let result = fn.apply(obj, args) // 3.通过apply改变构造函数的this指向,指向创建的对象
return result instanceof Object ? result : obj; // 4.判断返回值类型:返回值是引用类型返回引用类型,是基本类型就返回对象
}
// 使用操作符
console.log(myNew(Foo, 'rebecca', 18))展开等人赞过35 - input输入框,当Type="file"时,设置accpet属性:
1:选择全部类型文件 accept="*";
2:选择部分类型图片,(例如jpg或png) accept=".jpg,.png";评论点赞 - CommonJS 加载的是一个对象(即module.exports属性),该对象只有在脚本运行完才会生成。而 ES6 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。等人赞过评论4
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
运行时加载: CommonJS 模块就是对象;即在输入时是先加载整个模块,生成一个对象,然后再从这个对象上面读取方法,这种加载称为“运行时加载”。
编译时加载: ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,import时采用静态命令的形式。即在import时可以指定加载某个输出值,而不是加载整个模块,这种加载称为“编译时加载”。
作者:前端南玖
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。展开评论点赞