前端---js中的继承和prototype

JS构造器与Prototype
本文深入探讨了JavaScript中构造器的概念及其与Prototype的关系,解析了为何在定义构造器时不应直接在函数内部定义方法,而应利用Prototype来避免性能低下和闭包问题。通过实例演示了如何使用Prototype为对象添加属性。

JavaScript的函数没有提供显示的继承语法,因而JavaScript中的对象全部是Object的子类.因此在js中各对象之间并不存在直接的斧子关系.JavaScript提供prototype来构建内建类,通过这些内建类可以方便地创建各自的对象.

 在js当中定义一个JavaScript函数时,也就得到了一个同名的类,而且该函数就是该类的构造器.因此我们认为定义一个函数的同时,实质也就是一个构造器.

在定义Person函数的同时,也定义了一个Person类,而且该Person函数就是该Person类的构造器,该构造器不仅为Person实例完成了属性的初始化,还为Person实例提供了一个info方法.但如果在一个Person类中增加一个info方法会产生许多不好的效果:

  • 性能低下:因为每次创建Person实例时,程序以次向下执行,每次执行程序中粗体字代码时都将创建一个新的 info 函数.
  • 使得info函数中的局部变量产生闭包:闭包会扩大局部变量的作用域,使得局部变量一直存活到函数之外的地方.

为了避免这两种情况,通常不建议直接问在函数定义(也就是类定义)中直接为该函数定义方法,而是建议使用prototype属性. 

prototype的用法:

类名.prototype.方法名=function(){

实例

在本例中,我们将展示如何使用 prototype 属性来向对象添加属性:

<script type="text/javascript">

function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}

var bill=new employee("Bill Gates","Engineer",1985);

employee.prototype.salary=null;

bill.salary=20000;

document.write(bill.salary);   //输出20000;

</script>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值