悟透JavaScript之原型扩展 ---(2)
来源:互联网 发布:苹果文字识别软件 编辑:程序博客网 时间:2024/06/04 19:51
原型模型需要一个构造函数来定义对象的成员,而方法却依附在该构造函数的原型上。大致写法如下:
//定义构造函数
functionPerson(name)
{
this.name = name;//在构造函数中定义成员
};
//方法定义到构造函数的prototype上
Person.prototype.SayHello =function()
{
alert("Hello, I'm " +this.name);
};
//子类构造函数
functionEmployee(name, salary)
{
Person.call(this, name); //调用上层构造函数
this.salary = salary;//扩展的成员
};
//子类构造函数首先需要用上层构造函数来建立prototype对象,实现继承的概念
Employee.prototype =newPerson() //只需要其prototype的方法,此对象的成员
没有任何意义!
//子类方法也定义到构造函数之上
Employee.prototype.ShowMeTheMoney =function()
{
alert(this.name + " $" + this.salary);
};
varBillGates =newPerson("Bill Gates");
BillGates.SayHello();
varSteveJobs =newEmployee("Steve Jobs", 1234);
SteveJobs.SayHello();
SteveJobs.ShowMeTheMoney();
原型类模型虽然不能模拟真正的私有变量,而且也要分两部分来定义类,显得不怎么“优雅”。不过,对象间的方法是共享的,不会遇到垃圾回收问题,而且性能优于“闭包”模型。正所谓“有失必有得”嘛。在原型模型中,为了实现类继承,必须首先将子类构造函数的prototype设置为一个父类的对象实例。创建这个父类对象实例的目的就是为了构成原型链,以起到共享上层原型方法作用。但创建这个实例对象时,上层构造函数也会给它设置对象成员,这些对象成员对于继承来说是没有意义的。虽然,我们也没有
给构造函数传递参数,但确实创建了若干没有用的成员,尽管其值是undefined,这也是一种浪费啊。唉!世界上没有完美的事情啊!- 悟透JavaScript之原型扩展 ---(2)
- 悟透JavaScript之原型扩展 ---(1)
- 悟透JavaScript-原型扩展
- 悟透JavaScript - 原型扩展
- 悟透JavaScript之原型真谛---(2)
- 《悟透JavaScript》学习札记十之原型扩展
- 悟透JavaScript(李站老师)-原型扩展
- 《悟透javascript》学习笔记:十、原型扩展
- 悟透JavaScript之初看原型 --- (2)
- 悟透JavaScript之原型真谛 --- (1)
- 悟透JavaScript之原型真谛 ---(3)
- 再读《悟透javascript》之二、JavaScript原型
- 扩展javascript扩展(类,对象,原型)
- 收集JavaScript内置对象扩展原型函数2
- javascript设计模式介绍(三) 原型模式 扩展知识
- 悟透JavaScript之初看原型 --- (1)
- 悟透JavaScript之初看原型 --- (3)
- JavaScript原型和闭包之---原型(三)
- Canvas类和Paint的绘制机器人
- Oracle SQL语句调优(一)
- 今儿先给开个头儿
- 悟透JavaScript之原型扩展 ---(1)
- 突破应用的边界——以人为中心的信息系统
- 悟透JavaScript之原型扩展 ---(2)
- 查找两个已经排好序的数组的第k大的元素
- 单链表的逆置-C++实现
- photoshop分割保存精灵表图片
- mysql中字符集问题
- DIV常用样式汇总全集
- main中的两个参数和引出的一个问题。
- 使用django的用户帐号登录openfire
- 你能够写出完整的字符串拷贝函数吗?