原型链定义:
原型机制就是存在于对象中的一个内部链接,它会引用其他对象。通常来说,这个链接的作用是:如果在对象上没有找到需要的属性或者方法引用,引擎就会继续在原型关联的对象上进行查找。同理,如果在后者中也没有找到需要的引用就会继续查找它的原型,以此类推。这一系列对象的链接被称为“原型链”。
function Foo(name) {
this.name = name;
}
Foo.prototype.myName = function() {
return this.name;
};
function Bar(name,label) {
Foo.call( this, name );
this.label = label;
}
// 我们创建了一个新的 Bar.prototype 对象并关联到 Foo.prototype
Bar.prototype = Object.create( Foo.prototype );
Bar.prototype.myLabel = function() {
return this.label;
};
var a1 = new Bar( "n1", "lab1" );
var a2 = new Bar( "n2", "lab2" );
a1.myName(); // "n1"
a1.myLabel(); // "lab1"
a2.myName(); // "n2"
a2.myLabel(); // "lab2"
原型示意图
继承:
在面向类的语言中,类可以被复制(或者说实例化)多次,就像用模具制作东西一样。实例化(或者继承)一个类就意味着“把类的行为复制到对象中”,对于每一个新实例来说都会重复这个过程。
但是在 JavaScript 中,并没有类似的复制机制。你不能创建一个类的多个实例,只能创建多个对象,它们的原型关联的是同一个对象。这些对象之间并不会完全失去联系,它们是互相关联的。
网友评论