ES6标准入门

0323更新
《javascript忍者秘籍》
《javascript数据结构与算法》
在学习到proxy时,需要补充知识

  • apply、call对比
  • 对象的原生方法及用途

javascript

对象

一个对象的属性可以被解释成一个附加到对象上的变量,对象的属性和普通的 javascript 变量基本没什么区别,仅仅是属性属于某个对象。属性定义了对象的特征。
你可以通过点符号来访问一个对象的属性。
和其他 javascript 变量一样,对象的名字(可以是普通的变量)和属性的名字都是大小写敏感的。你可以在定义一个属性的时候就给它赋值。
对象中未赋值的属性的值为undefined(而不是null),
属性访问器提供了两种方式用于访问一个对象的属性,它们分别是点号和方括号。
一个对象的属性名可以是任何有效的 JavaScript 字符串,或者可以被转换为字符串的任何类型,包括空字符串。

枚举一个对象的所有属性(需要练习)

  • for…in 循环
    该方法依次访问一个对象及其原型链中所有可枚举的属性。
  • Object.keys(o)
    该方法返回对象 o 自身包含(不包括原型中)的所有可枚举属性的名称的数组。
  • Object.getOwnPropertyNames(o)
    该方法返回对象 o 自身包含(不包括原型中)的所有属性(无论是否可枚举)的名称的数组。

    创建新对象

  • 通过字面值创建对象{}

  • 通过构造函数
  • 使用Object.create()函数,可以为对象指定原型对象

继承

  • 所有的 JavaScript 对象至少继承于一个对象。被继承的对象被称作原型,并且继承的属性可通过构造函数的 prototype 对象找到。
  • 每个实例对象( object )都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype
  • 该原型对象也有一个自己的原型对象( proto ) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
  • 几乎所有 JavaScript 中的对象都是位于原型链顶端的 Object 的实例。
  • JavaScript 对象是动态的属性“包”(指其自己的属性)。JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

    js对象原型模型

  • 在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。Object 构造函数为给定值创建一个对象包装器。

最好的闭包例子

  1. function Obj(value) {
  2. this.value = value;
  3. this.next = null;
  4. }
  5. Obj.prototype[Symbol.iterator] = function() {
  6. var iterator = { next: next };
  7. var current = this;
  8. function next() {
  9. if (current) {
  10. var value = current.value;
  11. current = current.next;
  12. return { done: false, value: value };
  13. } else {
  14. return { done: true };
  15. }
  16. }
  17. return iterator;
  18. }
  19. var one = new Obj(1);
  20. var two = new Obj(2);
  21. var three = new Obj(3);
  22. one.next = two;
  23. two.next = three;
  24. for (var i of one){
  25. console.log(i); // 1, 2, 3
  26. }

严格模式

参考文档:

结构化表述-《金字塔原理》

新学习支线

  • 慕课网-电子书阅读器项目
  • 手机缓存- Vue进阶学习视频
  • 腾讯课堂node.js 九阳真经