在面向对象的语言中,我们使用类来创建一个自定义对象。然而JavaScript中所有事物都是对象,那么用什么办法来创建自定义对象呢?
这就需要引入另外一个概念 - 原型(prototype),我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉好像是拷贝)。
让我们看一下通过prototype创建自定义对象的一个例子:
//构造函数 function Life(name,type){ this.name=name; this.type = type; } //life的原型,原型中的属性可以被自定义对象引用 life.prototype = { getName:function(){ alert(this.name); }, getType:function(){ alert(this.type); } }
实例化类的代码:
var people = new Life("张三","人"); people.getName(); var cat = new Life("八路","猫"); cat.getType();
当var people = new life("张三","人"); 执行时:
1、创建一个空对象(new Object())
2、链接life.prototype中的属性到这个空对象
3、将这个对象通过this关键词传递到构造函数中并执行构造函数
4、赋值给变量people
如何在javascript中实现简单的继承呢?
下面的例子将创建一个类test,它从Life继承了原型prototype中的所有属性
function Test(name,type,testId){ this.name = name; this.type = type; this.id = testId; } //创一个Life实例,将Test的原型指向它。Life的实例可以调用Life的属性和方法,所以Test的原型也可以调用。
Test.prototype = new Life(); Test.prototype.getId = function(){ alert(this.id); } var t = new Test('树',"植物",'1111'); t.getName(); t.getId();