资讯专栏INFORMATION COLUMN

对JS继承的一点思考

wapeyang / 1119人阅读

摘要:举个例子,现在有一个叫做的构造函数,表示猫对象的原型。不受的影响但是通过上面的例子你会发现用构造函数生成实例对象,它有一个缺点,那就是无法共享属性和方法。

在Javascript语言中,new命令后面跟的不是类,而是构造函数。

举个例子,现在有一个叫做CAT的构造函数,表示猫对象的原型。

function CAT(name){
    this.name = name;
    this.age = 3;
}

当我们new这个构造函数的时候,就会生成一个猫对象的实例。

var Tom = new CAT("Tom");
var Jack = new CAT("Jack");
Tom.age = 5;
alert(Tom.name+","+Tom.age);  //Tom,5
alert(Jack.name+","+Jack.age);  //Jack,3  不受Tom的影响

但是通过上面的例子你会发现:用构造函数生成实例对象,它有一个缺点,那就是无法共享属性和方法。

因为这两个对象的age属性是独立的,修改其中一个,不会影响到另一个。

这样做的坏处就是会造成资源浪费,那么我们要如何来解决这件事呢,那就需要prototype出场了。

这个属性包含一个对象(以下简称"prototype对象"),所有实例对象需要共享的属性和方法,都放在这个对象里面;那些不需要共享的属性和方法,就放在构造函数里面。

CAT的代码利用prototype就可以改写成这样子了:
function CAT(name){
    this.name = name;
}
CAT.prototype.age = 3;
var Tom = new CAT("Tom");
var Jack = new CAT("Jack");
CAT.prototype.age = 5;
alert(Tom.name+","+Tom.age);   //Tom,5
alert(Jack.name+","+Jack.age);  //Jack,5

age属性放在prototype对象里,是两个实例对象共享的。只要修改了prototype对象,就会同时影响到两个实例对象。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78324.html

相关文章

  • instanceof使用中可能漏掉一点细节

    摘要:代码传送门如上代码示例,从其运行结果可知,是等于的原型的,是被对象后返回的函数,从验证结果来看,函数经过的一层包装,依然不会影响其原型检测的绑定。前言 在面向对象语言中,一般都有关键字 instanceof 来检测对象类型,更准确点来说是检测对象是哪个类型的实例。那么在 JS 中这个关键字又有什么不同之处呢?此文仅是一篇对 ES 标准中 instanceof 关键字的解读,并记录了在此过程中...

    lauren_liuling 评论0 收藏0
  • js原型的思考

    摘要:原型链上有两个关键词和比较重要,是设置构造函数的原型对象,是声明原型的构造函数,不管是对象还是函数,都有一个隐式属性用来构成一条完整原型链的指向。 思考 说到原型,不得不提到原型链,js中不管是对象还是方法(也是对象)都有个隐藏属性_proto_,来表示原型链的下一个指向,一般对象是指向Object.prototype,方法是指向Function.prototype,构造函数new出来...

    Pocher 评论0 收藏0
  • 前端开发知识点整理

    摘要:前言本文主要是有关前端方面知识按照目前的认知进行的收集归类概括和整理,涵盖前端理论与前端实践两方面。 前言:本文主要是有关前端方面知识按照 XX 目前的认知进行的收集、归类、概括和整理,涵盖『前端理论』与『前端实践』两方面。本文会告诉你前端需要了解的知识大致有什么,看上去有很多,但具体你要学什么,还是要 follow your heart & follow your BOSS。 初衷...

    Blackjun 评论0 收藏0
  • 前端开发知识点整理

    摘要:前言本文主要是有关前端方面知识按照目前的认知进行的收集归类概括和整理,涵盖前端理论与前端实践两方面。 前言:本文主要是有关前端方面知识按照 XX 目前的认知进行的收集、归类、概括和整理,涵盖『前端理论』与『前端实践』两方面。本文会告诉你前端需要了解的知识大致有什么,看上去有很多,但具体你要学什么,还是要 follow your heart & follow your BOSS。 初衷...

    Sike 评论0 收藏0
  • 前端开发知识点整理

    摘要:前言本文主要是有关前端方面知识按照目前的认知进行的收集归类概括和整理,涵盖前端理论与前端实践两方面。 前言:本文主要是有关前端方面知识按照 XX 目前的认知进行的收集、归类、概括和整理,涵盖『前端理论』与『前端实践』两方面。本文会告诉你前端需要了解的知识大致有什么,看上去有很多,但具体你要学什么,还是要 follow your heart & follow your BOSS。 初衷...

    tracy 评论0 收藏0

发表评论

0条评论

wapeyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<