闭包: 在外围作用域结束后,仍能访问到外围作用于变量的一些函数。
在一些编程语言中,函数中的局部变量仅在函数的执行期间可用.
JavaScript中的函数会形成闭包。 闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。
原型链:为了多个对象拥有相同的属性,节省内存和减少重复代码等
prototype: 函数身上,指向圆形对象
proto: 对象身上(函数创建的对象,函数本身和圆形对象),指向自身原型。
constructor: 原型对象上,指向构造函数。指明构造函数方便在对象上扩展原型属性。
Object.proto为null:原型的顶端
使用
通常情况下,我们在实现继承的时候,会将一个函数的原型指向另一个函数的实例对象,而不是函数的原型本身。
function Foo() {
this.value = 42;
}
Foo.prototype = {
method: function() {}
};
function Bar() {}
// 设置Bar的prototype属性为Foo的实例对象
Bar.prototype = new Foo();
或者
Bar.prototype.method = function(x, y) { }
- var b = extends({}, a) //一次性复制
- var c = Object.create(a); // 会有引用
原型类:当对一个对象进行属性字段查找时,可以到另外一个对象中查找。
原型模式构造:减少了创建一个新对象时候复制所有属性这一开销。创建一个新对象对原型对象的委托。