ES6标准入门
0323更新
《javascript忍者秘籍》
《javascript数据结构与算法》
在学习到proxy时,需要补充知识
- apply、call对比
- 对象的原生方法及用途
对象
一个对象的属性可以被解释成一个附加到对象上的变量,对象的属性和普通的 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
构造函数为给定值创建一个对象包装器。
最好的闭包例子
function Obj(value) {
this.value = value;
this.next = null;
}
Obj.prototype[Symbol.iterator] = function() {
var iterator = { next: next };
var current = this;
function next() {
if (current) {
var value = current.value;
current = current.next;
return { done: false, value: value };
} else {
return { done: true };
}
}
return iterator;
}
var one = new Obj(1);
var two = new Obj(2);
var three = new Obj(3);
one.next = two;
two.next = three;
for (var i of one){
console.log(i); // 1, 2, 3
}
严格模式
参考文档:
结构化表述-《金字塔原理》
新学习支线
- 慕课网-电子书阅读器项目
- 手机缓存- Vue进阶学习视频
- 腾讯课堂node.js 九阳真经