JS高级 - 面向对象5(继承,引用)
<script type="text/javascript">//------------------Person类//(Person)的构造函数function Person(name, sex) {this.name = name;this.sex = sex;}Person.prototype.showName = function() {console.log(this.name)};Person.prototype.showSex = function() {console.log(this.sex)};//var obj = new Person("tangsan","男");//obj.showName();//------------------Worker类//(Worker)的构造函数function Worker(name, sex, job) {console.log(this) //this->是new出来的Woker对象//构造函数伪装://调用父级(Person)的构造函数 —— 1.为了继承属性Person.call(this, name, sex);this.job = job;}//原型链://2.原型来继承父级原型Worker.prototype = Person.prototype;Worker.prototype.showjob = function() {console.log(this.job)}var Workerobj = new Worker("流川枫", "女", "篮球员");Workerobj.showjob();</script>
继承:
父类的构造函数。
- 子类继承属性。
//(Worker)的构造函数function Worker(name, sex, job) {console.log(this) //this->是new出来的Woker对象//构造函数伪装://调用父级(Person)的构造函数 —— 1.为了继承属性Person.call(this, name, sex);this.job = job;}
- 继承父类的方法。
//原型链://2.原型来继承父级原型Worker.prototype = Person.prototype;
子类影响父类的问题:
console.log(Person.prototype.showjob);//输出:
//function () {
// console.log(this.job)
// }
引用:
钥匙,同一块区域的地址
记住,js里面所有的对象全是引用。
var arr1 = [1,2,3];var arr2 = arr1;//配钥匙arr2.push(4);console.log(arr2);//1234console.log(arr1);//1234
如果我不希望是一个引用,我希望我修改arr2的时候,arr1不受影响,怎么做呢?ex:
var arr1 = [1,2,3];var arr2 = [];for(var i in arr1){//把arr1里的东西复制一份到arr2中。arr2[i]=arr1[i];}arr2.push(4);console.log(arr2);//1234console.log(arr1);//123
继承父类的方法的代码修改为:
//原型链://2.原型来继承父级原型//Worker.prototype = Person.prototype;for (var i in Person.prototype) {Worker.prototype[i] = Person.prototype[i]; }
instanceof
instanceof
运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype
属性。
type of :....的类型
var arr1 = [1,2,3];console.log(arr1 instanceof Array);//trueconsole.log(arr1 instanceof Object);//true 所有的类都是Object的一个子类,从object继承来的
JS高级 - 面向对象5(继承,引用)相关推荐
- 前端与移动开发----JS高级----面向对象编程,类与实例对象,继承,严格模式,模板字符串,class封装tab栏
JS高级01 回顾上阶段 Javascript组成 ECMAScript: 基础语法 (变量, 表达式, 循环, 判断, 函数, 对象等) DOM: document 操作标签(获取, 增加, 插入, ...
- JS高级---面向对象
理解对象 对象是Object的实例,js中万物皆对象,都拥有属性和方法. 比如下面的两个对象通过不同的方式创建,但他们是等价的 // 实例化对象 let p1 = new Object(); p1.n ...
- JS高级----面向对象
面向对象 面向对象是一种编程思想. 主要是把事物给对象化,包括其属性和行为.总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象. 构造函数: 构造函数是专门用于创建对 ...
- JS高级 - 面向对象3(面向过程改写面向对象)
改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: t ...
- JS高级——面向对象方式解决歌曲管理问题
需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原 ...
- js高级:面向对象+ES6
js高级:面向对象+ES6 文章目录 js高级:面向对象+ES6 day01 一.ES6中的类和对象 1.1对象 1.2类 1.3创建类 1.4类constructor构造函数 1.5类中添加方法 1 ...
- Java第四次作业——面向对象高级特性(继承和多态)
Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...
- JS 高级(继承、函数)
JS 高级 继承 构造函数继承 <script>// 构造函数继承// 定义的Person类function Person(name, age) {this.name = name;thi ...
- Java第四次作业,面向对象高级特性(继承和多态)
Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...
最新文章
- php字符串数组访问,php – 按字符串键x访问数组,其中x是“123”
- 一次深夜优化,MySQL亿级数据分页的奇妙经历
- HTML(六)——表单验证、正则表达式、事件
- 将C1Chart数据导出到Excel
- weblogic配置domain和删除domain
- php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
- [导入]New ASP.NET Charting Control: asp:chart runat=server/
- 计算机考试打字小作文,打字练习作文(通用5篇)
- 不知道PDF转Word用什么软件?试试这3款实用软件
- Php-SPL库中的迭代器类详解
- 整理软件测试分析资料
- 图片怎么转换成png格式?
- 音标、音节、音素、音符
- 如何计算机器人的工作范围,如何根据工业机器人的工作范围选择合适的机器人型号?...
- 一文搞清楚 DNS 的来龙去脉
- 图片去水印工具-图片去水印的工具有哪些
- 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
- 开源商城项目无法打开问题
- php默认ssl版本号,centos 6.5系统PHP环境下的CURL库的SSL Version默认为NSS,怎么变更为OpenSSL?...
- 如何加速网页的打开速度?
热门文章
- VeriSign SSL证书apache安装
- centos7.3修改mysql密码_Centos7.3下mysql5.7.18安装并修改初始密码的方法
- java arraylist排序_Java 开发者最容易犯的10个错误【译】
- MYSQL密码解密函数的使用
- python查看文件夹下所有文件
- 移动端实现复制到剪贴板
- NSArray和NSDictionary的混合
- vs2015使用GIt连接git.oschina.net/
- 转-android图片降低图片大小保持图片清晰的方法
- 《SqlServer性能分析一》