<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>

继承:

  1. 父类的构造函数。

  2. 子类继承属性。
//(Worker)的构造函数function Worker(name, sex, job) {console.log(this) //this->是new出来的Woker对象//构造函数伪装://调用父级(Person)的构造函数 —— 1.为了继承属性Person.call(this, name, sex);this.job = job;}
  1. 继承父类的方法。
    //原型链://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(继承,引用)相关推荐

  1. 前端与移动开发----JS高级----面向对象编程,类与实例对象,继承,严格模式,模板字符串,class封装tab栏

    JS高级01 回顾上阶段 Javascript组成 ECMAScript: 基础语法 (变量, 表达式, 循环, 判断, 函数, 对象等) DOM: document 操作标签(获取, 增加, 插入, ...

  2. JS高级---面向对象

    理解对象 对象是Object的实例,js中万物皆对象,都拥有属性和方法. 比如下面的两个对象通过不同的方式创建,但他们是等价的 // 实例化对象 let p1 = new Object(); p1.n ...

  3. JS高级----面向对象

    面向对象 面向对象是一种编程思想. 主要是把事物给对象化,包括其属性和行为.总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象. 构造函数: 构造函数是专门用于创建对 ...

  4. JS高级 - 面向对象3(面向过程改写面向对象)

    改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: t ...

  5. JS高级——面向对象方式解决歌曲管理问题

    需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原 ...

  6. js高级:面向对象+ES6

    js高级:面向对象+ES6 文章目录 js高级:面向对象+ES6 day01 一.ES6中的类和对象 1.1对象 1.2类 1.3创建类 1.4类constructor构造函数 1.5类中添加方法 1 ...

  7. Java第四次作业——面向对象高级特性(继承和多态)

    Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...

  8. JS 高级(继承、函数)

    JS 高级 继承 构造函数继承 <script>// 构造函数继承// 定义的Person类function Person(name, age) {this.name = name;thi ...

  9. Java第四次作业,面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

最新文章

  1. php字符串数组访问,php – 按字符串键x访问数组,其中x是“123”
  2. 一次深夜优化,MySQL亿级数据分页的奇妙经历
  3. HTML(六)——表单验证、正则表达式、事件
  4. 将C1Chart数据导出到Excel
  5. weblogic配置domain和删除domain
  6. php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
  7. [导入]New ASP.NET Charting Control: asp:chart runat=server/
  8. 计算机考试打字小作文,打字练习作文(通用5篇)
  9. 不知道PDF转Word用什么软件?试试这3款实用软件
  10. Php-SPL库中的迭代器类详解
  11. 整理软件测试分析资料
  12. 图片怎么转换成png格式?
  13. 音标、音节、音素、音符
  14. 如何计算机器人的工作范围,如何根据工业机器人的工作范围选择合适的机器人型号?...
  15. 一文搞清楚 DNS 的来龙去脉
  16. 图片去水印工具-图片去水印的工具有哪些
  17. 诺基亚发布NetAct云网络管理系统,为5G网络演进铺路
  18. 开源商城项目无法打开问题
  19. php默认ssl版本号,centos 6.5系统PHP环境下的CURL库的SSL Version默认为NSS,怎么变更为OpenSSL?...
  20. 如何加速网页的打开速度?

热门文章

  1. VeriSign SSL证书apache安装
  2. centos7.3修改mysql密码_Centos7.3下mysql5.7.18安装并修改初始密码的方法
  3. java arraylist排序_Java 开发者最容易犯的10个错误【译】
  4. MYSQL密码解密函数的使用
  5. python查看文件夹下所有文件
  6. 移动端实现复制到剪贴板
  7. NSArray和NSDictionary的混合
  8. vs2015使用GIt连接git.oschina.net/
  9. 转-android图片降低图片大小保持图片清晰的方法
  10. 《SqlServer性能分析一》