首先要理解prototype是什么?每个function对象都有一個prototype的属性。 而prototype本身也就是一個object,所以可以动态的给它增加属性和方法, 我在想为什么设计者要加给这个function加一個原型这个概念呢?
就是为了让对象共享自己的财富。
我们在看看下面的代码:
prototype的特性 一:
上面说明了prototype就是把自己的财富让其他对象共享了。
下面我们在定义一個Employee
Employee.prototype=new Person();
Employee.prototype.show=function(){alert("money")}//动态的增加一個show方法
下面是javascript的继承的写法:
上面的代码说明了prototype不仅可以[b]共享财富[/b],还可以 关联的作用, 就像继承一样。
如果本身的prototype 没有的属性或者方法, 会沿着prototype关联的一级一级的往上查找。 就形参了我们说的原型链
所以我们体会到了javascript里面的prototype 是很优雅的,扩展性很明显了, 不仅横向的共享多个对象的财富,也纵向的 共享了有祖父的财富.
javascript真的很优美, 正是因为它这样的简单和自然。
这prototype就写到这里了, 下一篇我会写闭包模型和 原型模型的,这两者的得与失。
就是为了让对象共享自己的财富。
我们在看看下面的代码:
function Person(name)
{
this.name = name; //设置对象属性,每个对象各自一份属性数据
};
Person.prototype.SayHello = function() //给Person 函数的prototype 添加SayHello 方法。
{
alert("Hello, I'm " + this.name);
}
var BillGates = new Person("Bill Gates"); //创建BillGates 对象
var SteveJobs = new Person("Steve Jobs"); //创建SteveJobs 对象
BillGates.SayHello(); //通过BillGates 对象直接调用到SayHello 方法
SteveJobs.SayHello(); //通过SteveJobs 对象直接调用到SayHello 方法
alert(BillGates.SayHello == SteveJobs.SayHello); //因为两个对象是共享prototype 的SayHello,所以显示:
true
prototype的特性 一:
上面说明了prototype就是把自己的财富让其他对象共享了。
下面我们在定义一個Employee
Employee.prototype=new Person();
Employee.prototype.show=function(){alert("money")}//动态的增加一個show方法
下面是javascript的继承的写法:
function Person(name)
{
this.name = name; //设置对象属性,每个对象各自一份属性数据
};
Person.prototype.SayHello = function() //给Person 函数的prototype 添加SayHello 方法。
{
alert("Hello, I'm " + this.name);
}
function Employee(name,money) //实现继承
{
Person.call(this,name);
this.money=money;
}
Employee.prototype=new Person(); //这里就像一個指针一样 指向了上一级。形参一個链
Employee.prototype.show=function(){alert(this.money)};
var employee =new Employee("jons",400);
employee.show();
employee.SayHello();
上面的代码说明了prototype不仅可以[b]共享财富[/b],还可以 关联的作用, 就像继承一样。
如果本身的prototype 没有的属性或者方法, 会沿着prototype关联的一级一级的往上查找。 就形参了我们说的原型链
所以我们体会到了javascript里面的prototype 是很优雅的,扩展性很明显了, 不仅横向的共享多个对象的财富,也纵向的 共享了有祖父的财富.
javascript真的很优美, 正是因为它这样的简单和自然。
这prototype就写到这里了, 下一篇我会写闭包模型和 原型模型的,这两者的得与失。