转换器

转换器说明
babel-coreES6代码转换器
babel-preset-env会加载从es2015开始的所有preset 相当于 es2015 ,es2016 ,es2017 及最新版本。 https://segmentfault.com/a/1190000016311818
babel-preset-stage-0preset-stage-1 preset-stage-2 preset-stage-3 https://github.com/babel/babel/blob/master/packages/babel-preset-stage-0/README.md
babel-polyfill来模拟实现浏览器本身不支持的对象或方法 https://github.com/jamiebuilds/babel-handbook/blob/master/translations/zh-Hans/user-handbook.md#toc-babel-polyfill
babel-plugin-import自动转换为按需引入的方式 https://segmentfault.com/a/1190000019322275
babel-plugin-module-resolver设置一个自定义别名目录 https://github.com/tleunen/babel-plugin-module-resolver
babel-plugin-syntax-dynamic-import懒加载

阅读全文

会改变原始数组称为变异方法,不改变原始数组称为非变异方法

增加元素


变异方法: .push() 和 .unshift()

let mutatingAdd = ['a', 'b', 'c', 'd', 'e'];
mutatingAdd.push('f');     // ['a', 'b', 'c', 'd', 'e', 'f']
mutatingAdd.unshift('z');  // ['z', 'a', 'b', 'c', 'd', 'e']
  • array.push() 增加一个元素到数组末尾
  • array.unshift() 增加一个元素到数组开头

阅读全文

Array.of

Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。


let arr = new Array(50);
console.log(arr)    // [empty × 50]

我们想创建数字50,但通过new Array()方式无法创建。

let arr = Array.of(50)
console.log(arr)    // [50]

现在我们可以创建一个长度为1,值为50的数组。
所以,Array.of方法我们一般用于将一组值,转换为数组。

let arr = Array.of(1,2,3)
console.log(arr)    // [1,2,3]

阅读全文

在javascript中,创建新对象的三种常用方法如下:

// 对象字面量
{};

// object构造器的简洁记法
new Object();

// 创建一个空的对象
Object.create();

对象字面量


// 对象字面值是封闭在花括号对({})中的一个对象的零个或多个"属性名-值"对的(元素)列表。
var test1 = {
    name: '前端柒号'
    site: 'www.qianduan7.com'
};

// 根据上面的对象我们做下测试
test1 instanceof Object; // true
test1.__proto__ === Object.prototype  // true,指向创建它构造函数的原型对象。

// 在ES2015,对象字面值扩展支持在创建时设置原型
var test1 = {
    __proto__: protoObj
    name: '前端柒号'
    site: 'www.qianduan7.com'
};

阅读全文

介绍


在《Javascript设计模式》书中定义:Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于希望接收到通知(订阅者)的对象和激活事件的对象(发布者)之间。该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值。其目的是避免订阅者和发布者产生依赖关系。

优点:

  • 松耦合
  • 扩展性强
  • 灵活度高
  • 易于测试

缺点:

  • 由于订阅者和发布者之间动态关系,很难跟踪依赖更新。

阅读全文