JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JS原型对象

原型(prototype),是 JavaScript 特有的一个概念,通过使用原型,JavaScript 可以建立其传统 OO 语言中的继承,从而体现对象的层次关系。JavaScript 本身是基于原型的,每个对象都有一个 prototype 的属性来,这个 prototype 本身也是一个对象,因此它本身也可以有自己的原型,这样就构成了一个链结构。

访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为 null 的对象(JavaScript 的基对象 Object 的构造器的默认prototype 有一个 null 原型),如果此对象仍没有该属性,则返回 undefined。

下面我们看一个具体的例子:
//声明一个对象base
function Base(name){
    this.name = name;
    this.getName = function(){
        return this.name;
    }
}
//声明一个对象child
function Child(id){
    this.id = id;
    this.getId = function(){
        return this.id;
    }
}
//将child的原型指向一个新的base对象
Child.prototype = new Base("base");
//实例化一个child对象
var c1 = new Child("child");
//c1本身具有getId方法
print(c1.getId());
//由于c1从原型链上"继承"到了getName方法,因此可以访问
print(c1.getName());

得出结果:
child
base

由于遍历原型链的时候,是有下而上的,所以最先遇到的属性值最先返回,通过这种机制可以完成重载的机制。