JavaScript的面向对象

        JavaScript采用原型模式实现面向对象。原型的英文为Prototype,也意为雏形。雏形相比原型更好的说明了JavaScript的面向对象原理,因为雏形更能表明原始对象的不完整性。

       原型模式在《设计模式》中有介绍,“明确一个实例作为要生成对象的原型,通过复制该实例来生成新的对象”。原型模式在静态语言(如C++)中的作用不太显著,但对于动态语言(如JavaScript)则是核心思想。通常在面向对象中,对象的原型就是类,从类生成对象是普遍的认同。但另一种观点认为,类不是必须的,对象不需要从类生成,而是复制已有的对象。JavaScript正是采用了这种思想。

       需要新对象时,只需向对象添加属性。添加函数对象,就成为方法。如果属性不存在,则会查找prototype属性指定的对象。所以JavaScript是利用委派而不是继承实现面向对象。

function Tool() {
    this.Use = function() { return "using..."; }
}

var tool = new Tool();
alert(tool.Use());

function Hammer() {}
Hammer.prototype = new Tool();

var hammer = new Hammer();
alert(hammer.Use());

       在创建对象时,函数对象起到了构造器的作用。当调用new时完成以下操作:

  1. 生成对象
  2. 将原型的内部属性__proto__设置为原型的prototype属性,这里为Tool.prototype
  3. 调用函数,这里为Tool,参数为调用new时的参数
  4. 返回新对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值