在前面学习的是js的面向对象中数据的封装。类方法和原型方法的一些区别,所以现在是面向对象的继承的几种方法:
有一个动物对象的构造函数
function Animal() { this.species = "动物"; }
有一个猫对象的构造函数
function Cat(name,color) { this.name = name; this.color = color; }
如何使猫继承动物呢
一:构造函数的绑定
使用call或者apply方法,将对象的构造函数绑定在子对象上,即在子对象的构造函数中加一行
function Cat(name,color) { Animal.apply(this, arguments); this.name = name; this.color = color; } var cat1 = new Cat("大毛","黄色"); alert(cat1.species); // 动物
使用prototype属性,如果猫的prototype对象,指向一个Animal的实例,那么所有猫的实例就能继承Animal了。
Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; var cat1 = new Cat("大毛","黄色"); alert(cat1.species); // 动物
下面是解释
//这一行是讲Cat的prototype对象指向Animal的一个实例,相当于将新值覆盖了了原来的值 Cat.prototype = new Animal();
任何一个prototype对象都有一个constructor属性,指向他的构造函数。如果没有“Cat.prototype = new Animal();”Cat.prototype.constructor是指向Cat 的,加了之后指向Animal
Cat.prototype.constructor = cat;
更重要的是,没一个实例都有一个constructor属性,默认调用prototype对象的constructor属性
因此在运行
Cat.prototype = new Animal()
之后,cat1.constructor也指向Animall。
三、直接继承prototype
这是第二种方法的改进,因为Animal对象中,不变的属性可以直接写入Animal。prototype中,所以我们可以直接继承Animal.prototype.
首先,将Animal改写为
function Animal(){}; Animal.prototype.species = '动物';
然后将Cat的prototype对象指向Animal的prototype,这样就完成了继承
Cat.prototype = Animal.prototype ; Cat.prototype.xonstructor = Cat ; var cat1 = new Cat('damao','haunse'); alert(cat1.species);
这种方法效率较高,比较省内存,但是Cat.prototype和Animal.prototype同时指向了同一对象,那么任何对Cat.prototype的修改都会反映到Animale.prototype。
相关推荐
这本书对javascript的一些核心技术,面向对象思想讲的很到位,分析的很容易理解,适合初学者以及想深入学习javascript OO的人
采用JavaScript面向对象思想封装拖拽移动功能,兼容pc端和移动端,适合JavaScript初学者进阶学习。
三、面向对象的三大特性 封装:隐藏实现细节,实现代码模块化 继承:扩展已存在的代码模块,实现代码重用 多态:接口的不同实现方式,实现接口重用 四、对象定义:无序属性的集合,其属性可以包含基本值、对象或者...
包括面向对象,面向对象编程思想,javascript面向对象,设计模式通俗版,快速进入模式学习与实践。
学习javascript的面向对象开发技术,掌握OOP思想
在鱼龙混杂的前端行业中,面向对象一直是一个非常让学习者头疼的区域...但是面向对象思想也是前端工作人员的一个非常重要的技能之一,学会面向对象之后,可以大幅度提高对JS的理解,让你在JS的世界中又迈了很大的一步。
潜意识里也就不会用面向对象的思想去编写JavaScript代码,也很少会去深入了解prototype, closures等概念。这导致书写的代码经常很糟糕。 对于JavaScript的学习,可能最重要的还是要从思想上认识到JavaScript不是...
理解面向对象开发思想 - 掌握 JavaScript 面向对象开发相关模式 - 掌握在 JavaScript 中使用正则表达式 - typora-copy-images-to media --- JavaScript 高级 课程介绍 课程大纲 在线地址: 目标 理解面向对象开发...
它里面不但牵涉面向过程编程思想,又有面向对象编程思想,同时,它的面向对象还和别的编程语言(如:C++,JAVA,PHP)不大一样。就好像又是新的一样,让你对曾经学的面向对象产生了怀疑…… D:辛苦学习后又看似和...
javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!
javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!
javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!
如果LZ要学ASP.NET,首先学习C#的语法、面向对象的编程思想(既然你会VBS,用VB也可以的。)。 前期LZ可以试着做一些简单的控台或者WinForm 然后学习ADO.NET,这个不可或缺。操作数据。 再然后学习ASP.NET,但是建议...
code-c++ 使用 C++环境(以 .cpp 为文件后缀),使用纯正的 C++面向对象方式书写 源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者...
前面两篇文章我们主要讲述了以“jQuery的方式如何开发插件”,以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插件的,两种方式各有利弊取长补短,本系列文章是以学习为导向的,具体场景大家自己定夺...
java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习: *第一阶段:Java基础,包括java语法,面向...
本篇分享一篇基于JavaWeb的养老院管理系统的...用面向对象的编程思想,按照软件工程的基本开发步骤进行系统分析、设计与实现。如上只是一个参考论文模板,感兴趣的自行下载学习,希望对大家有帮助。祝大家学业顺利!
虽然面向对象编程(Object-oriented programing)主导着业界,但很明显这种范式在 JavaScript 里非常笨拙,用起来就像在高速公路上露营或者穿着橡胶套鞋跳踢踏舞一样。我们不得不到处使用 bind 以免 this 不知不觉地...
通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和...