【面向对象】用大白话扯扯那"神奇"的面向对象之属性继承(三)------【凡尘】

1、继承概念

说到继承我们第一时间想到的是什么东西?

我第一时间想到的是继承父亲的亿万家产,从小我就一直在暗示自己,我是一个来自全国排行前100的首富家庭,我现在受的所有的苦和所有的坎坷都是父亲给我安排的,都是为了让让更好的磨练,今后好让我继承家业!直到现在,我还坚信这个想法,如果父亲还没有让我继承家业只是时机还未到.....好了我们先不意淫,当第一想到继承的时候肯定我们想到的是继承父亲已有的东西。 那么代码里面的东西我们也可以理解成子级继承父级已有的属性和方法

今天我们首先说下属性继承,方法继承放在第四章在讲。在讲属性继承的时候我们先来讲2个方法call&&applay
2、call

我们先创建一个对象mangseng,给这个对象加一个属性name,在加一个方法play

然后呢我们又创建了一个对象叫yasuo,这个时候我们想让yasuo也有play这个方法。因为play这个方法只有mangseng有,而yasuo是没有这个方法的,所以yasuo是没有办法调用这个play的

那我们可否借一下mangseng的方法呢?当然可以,在我们js中借我们可以用call

其实call的作用就是用来改变this的指向,第一个参数是调用这个方法的对象,第二个参数是函数调用时传递的参数

我们来举一个栗子,如果普通函数输出this的时候,this的指向会指向window,而用bind、call  apply可以改变this的指向。

3、call实际应用
a、我们知道document.getElementsByTagName();获取出来的对象是一个伪数组,伪数组是没有办法用for in的。如果我们用call方法改变this的指向那么就可以让伪数组转换成数组了

b、我们知道回调函数一般情况下this的指向都会执行window

c、我们可以在调用回调函数的时候把this改变即可

4、apply用法

call和apply的用法是一样的,唯独不同之处就是传递参数的不同
call:传递参数的时候需要一个个的进行传递
apply:传递参数的时候是传递的一个数组

实际应用:
     我们知道Math.max()可以返回一个最大值,但是这里面只能传递参数,没有办法传递一个对象,但是我们如果用apply的话     就可以方便的实现了。
 
5、说完call和apply下面我们来说下属性继承

首先我们先创建一个构造函数人类,然后把人共有的属性给抽出来,因为当你需要创建多个人的时候共有的特征是不需要多次重复书写的,因此我们将人类共有的属性抽出来

人类共有:年龄 性别  名字

我们通常把共有的属性和方法加在原型上面prototype

接下来我们创建一个男人,

虽然男人创建出来了,但是这个男人里面貌似没有性别 年龄  姓名等属性,但是人类这个构造函数身上却有,这时候我们就可以来

继承下人类身上的属性                                 

 

 方法继承最近马上更新!!!  【注】:如需转载请注明出处,码字不容易!请理解----如有不同理解,请大神多多指点

时间: 2024-11-07 20:26:40

【面向对象】用大白话扯扯那"神奇"的面向对象之属性继承(三)------【凡尘】的相关文章

用大白话扯扯那"神奇"的面向对象编程思维

前言: 每当提到面向对象的时候,初学者肯定都是一脸懵逼的状态,到底什么是面向对象?会用面向对象后有什么牛逼之处吗?不会用是不是就会死掉?答案肯定不会死掉,我们可以来简单的举一 个栗子 1.当你想到熊猫的时候你想到了什么? 答:"国宝" 2.当你看到"国宝"穿上衣服的时候你想到了什么名字? 答:"功夫熊猫"; 其实你可以理解成面向对象就是一种武功!你可以想象一下会武功和不会武功的人有什么区别?"走路带风.飞檐走壁.不食人间烟火.让妹子一看

随便扯扯,程序员应该具备哪些素质

趁着这几天无事,好好总结一下从事软件开发以来的一些想法,这篇blog尝试从我自身的一些经历来谈谈程序员应该具备哪些素质.如有不足之处,还请不吝赐教! 下面,我将列出并展开所有我认为程序员必须具备的素质. 基础知识 你也许是像我一样的自学者,没有数电/模电,编译原理,操作系统原理,网络与数据库等方面的知识,但是对于这些你应该尝试去了解.理解.当初跨专业考研之时学习的操作系统/网络/数据结构/数据库的知识于我现在的工作仍然有益,我有遇到过一些能力很强的人,他们做解决方案很强,但是debug能力说实话

【随便扯扯】Standby到底翻译成备用还是待机?

最近在翻译VMware VSAN的一本书,术语用词我以官方中文版客户端软件为准.可是,问题出现了,同一个英文表述在不同的中文版客户端软件中,甚至同一个客户端软件中都翻译的不一样. 比如Standby到底应该翻译成备用还是待机?     Web Client英文版里面是这样的:     到了中文版中同样的界面,3个Standby居然在一个页面里面就有2个不同的翻译了. 让我们再到中文版vSphere Client中去看看:    vSwitch配置过程中的Standby Adapter翻译为待机适

扯扯MySQL 5.6.19 Administrative Roles and Global Privileges

Role: 1.DBA 2.MaintenanceAdmin 3.ProcessAdmin 4.UserAdmin 5.SecurityAdmin 6.MonitorAdmin 7.DBManager 8.ReplicationAdmin 9.BackupAdmin 10.Custom,这个其实不算系统role吧,自定义的,可以组合Global Privileges Global Privileges: 1.Alter 2.Alter Routine 3.Create 4.Create Rout

用大白话告诉你啥是Java开发

Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的Web.Internet计算.从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现均支持Java applet. 经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系.是的,什么是Java,我想技术体系四个字应该是最好的概括了吧. 用大白话

面向对象编程的弊端是什么? 深入理解面向对象

现时C++可以说是支持OOP范式中最为常用及高性能的语言.虽然如此,在C++使用OOP的编程方式在一些场合未能提供最高性能.[1]详细描述了这个观点,我在此尝试简单说明.注意:其他支持OOP的语言通常都会有本答案中提及的问题,C++只是一个合适的说明例子. 历史上,OOP大概是60年代出现,而C++诞生于70年代末.现在的硬件和当时的有很大差异,其中最大的问题是内存墙. 内存墙,指的是内存性能严重限制CPU性能发挥的现象.在过去的20多年中,处理器的性能以每年大约55%速度快速提升,而内存性能的

DOTA与面向对象编程思想(1)——分述DOTA和面向对象思想

首先,必须声明这篇文章是一个业余程序员的业余之作.作为一个刚刚学习了一个月JAVA一个月Android,计算机C语言二级水平的人,大谈面向对象必然会漏洞百出,所以希望各位读者以科学的眼光去评价而不以科学的眼光去批评. 关于DOTA: DOTA是魔兽争霸的一款自定义地图,可支持5V5对战游戏,我是从2012年4月份开始玩的这个游戏,很晚辈.很晚辈了,到现在已经有3年有余了.这么写,好像我一直以这个游戏为职业呢,当然不会,嘿嘿,我只是一个学生,没事就才和同学们开开黑的.这个游戏特别好玩,至少是我玩过

以选项卡的故事扯扯js面向对象

在现在的网页中,选项卡(我自己这样子叫)是非常普遍的,也是比较基础,学了原型实现选项卡也挺久了,最近在学ES6,学了用类实现选项卡,今天就在此做个总结,别的废话也不多说. 以"貌"说这货 外貌--还好,长得挺帅 (自己理解的)选项卡:就是通过点击头部切换内容的货. 怎么得到这货 html代码 <div id="div1"> <input type="button" value="出国" class="

用大白话告诉你 :Java 后端到底是在做什么?

阅读本文大概需要 6 分钟. 作者:黄小斜 新手程序员通常会走入一个误区,就是认为学习了一门语言,就可以称为是某某语言工程师了.但事实上真的是这样吗?其实并非如此. 今天我们就来聊一聊,Java 开发工程师到底开发的是什么东西.准确点来说,Java后端到底在做什么? 大家都知道 Java 是一门后端语言,后端指的就是服务端,服务端代码一般运行在服务器上,通常我们运行Java 程序的服务器都是 Linux 服务器. 这些服务器在互联网公司中一般放在一个叫做机房的地方里,于是像我们这类 Java 程