`
jinhonglin001
  • 浏览: 14513 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

javascript面向对象思想的学习(三)

阅读更多

       在前面学习的是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.prototypeAnimal.prototype同时指向了同一对象,那么任何对Cat.prototype的修改都会反映到Animale.prototype。

 

 

 

分享到:
评论

相关推荐

    JavaScript面向对象编程指南

    这本书对javascript的一些核心技术,面向对象思想讲的很到位,分析的很容易理解,适合初学者以及想深入学习javascript OO的人

    js面向对象封装拖拽移动功能,兼容pc和移动端

    采用JavaScript面向对象思想封装拖拽移动功能,兼容pc端和移动端,适合JavaScript初学者进阶学习。

    学习javascript面向对象 理解javascript对象

    三、面向对象的三大特性 封装:隐藏实现细节,实现代码模块化 继承:扩展已存在的代码模块,实现代码重用  多态:接口的不同实现方式,实现接口重用 四、对象定义:无序属性的集合,其属性可以包含基本值、对象或者...

    javascript 设计模式简化版

    包括面向对象,面向对象编程思想,javascript面向对象,设计模式通俗版,快速进入模式学习与实践。

    .Principles.of.Object-Oriented.Programming.in.JavaScript

    学习javascript的面向对象开发技术,掌握OOP思想

    JavaScript-面向对象精讲系列

    在鱼龙混杂的前端行业中,面向对象一直是一个非常让学习者头疼的区域...但是面向对象思想也是前端工作人员的一个非常重要的技能之一,学会面向对象之后,可以大幅度提高对JS的理解,让你在JS的世界中又迈了很大的一步。

    说说掌握JavaScript语言的思想前提想学习js的朋友可以看看

    潜意识里也就不会用面向对象的思想去编写JavaScript代码,也很少会去深入了解prototype, closures等概念。这导致书写的代码经常很糟糕。 对于JavaScript的学习,可能最重要的还是要从思想上认识到JavaScript不是...

    百度java贪吃蛇源码百度-JavaScriptAdvanced8:JavaScript高级联系新版

    理解面向对象开发思想 - 掌握 JavaScript 面向对象开发相关模式 - 掌握在 JavaScript 中使用正则表达式 - typora-copy-images-to media --- JavaScript 高级 课程介绍 课程大纲 在线地址: 目标 理解面向对象开发...

    JavaScript该如何学习 怎样轻松学习JavaScript

    它里面不但牵涉面向过程编程思想,又有面向对象编程思想,同时,它的面向对象还和别的编程语言(如:C++,JAVA,PHP)不大一样。就好像又是新的一样,让你对曾经学的面向对象产生了怀疑…… D:辛苦学习后又看似和...

    传智播客 李东超 第2讲_贪食蛇

    javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!

    传智播客 李东超 第3讲_贪食蛇

    javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!

    李东超 第1讲_贪食蛇

    javascript是学习网页编程...这是李东超讲师的随堂所录视频,主要讲解使用javascript语言编写的贪食蛇小游戏,在本例中,使用的是面向对象的编程思想,可以让有基础的同学对js的掌握以及js面向对象的理解更加深入一层!

    开发动态网站的建议,绝对的有用

    如果LZ要学ASP.NET,首先学习C#的语法、面向对象的编程思想(既然你会VBS,用VB也可以的。)。 前期LZ可以试着做一些简单的控台或者WinForm 然后学习ADO.NET,这个不可或缺。操作数据。 再然后学习ASP.NET,但是建议...

    数据结构与算法:进度40%以C语言严谨描述数据结构与算法,同时以Go、JavaScript、C++等语言以简洁方式实现

    code-c++ 使用 C++环境(以 .cpp 为文件后缀),使用纯正的 C++面向对象方式书写 源码中并未采取面向接口、继承等思想来实现工具方法的复用,笔者认为不应该将编程语言的学习成本带入数据结构,笔者的意愿是:学习者...

    JavaScript插件化开发教程 (三)

    前面两篇文章我们主要讲述了以“jQuery的方式如何开发插件”,以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插件的,两种方式各有利弊取长补短,本系列文章是以学习为导向的,具体场景大家自己定夺...

    java必了解的六大问题

    java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习: *第一阶段:Java基础,包括java语法,面向...

    基于JavaWeb的养老院管理系统的设计与实现毕业论文

    本篇分享一篇基于JavaWeb的养老院管理系统的...用面向对象的编程思想,按照软件工程的基本开发步骤进行系统分析、设计与实现。如上只是一个参考论文模板,感兴趣的自行下载学习,希望对大家有帮助。祝大家学业顺利!

    JS 函数式编程指南

    虽然面向对象编程(Object-oriented programing)主导着业界,但很明显这种范式在 JavaScript 里非常笨拙,用起来就像在高速公路上露营或者穿着橡胶套鞋跳踢踏舞一样。我们不得不到处使用 bind 以免 this 不知不觉地...

    值类型与引用类型理论内容.part01.rar

    通过实际项目深入理解和掌握C# 基本语法、面向对象的思想、类的概念和使用、对象的创建、排序、IO操作等 数据库知识和 SQL Server 2000 (40课时) 讲授数据库的基本知识和SQL Server 2000, 讲授数据库的设计和...

Global site tag (gtag.js) - Google Analytics