<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);//1234
console.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);//1234
console.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);//true
console.log(arr1 instanceof Object);//true 所有的类都是Object的一个子类,从object继承来的

JS高级 - 面向对象5(继承,引用)的更多相关文章

  1. 探讨 JS 的面向对象中继承的那些事

    最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来 ...

  2. js高级-面向对象继承

    一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...

  3. JS高级 - 面向对象1(this,Object ,工厂方式,new )

    面向对象三要素: 封装 继承 多态 1.this 详解,事件处理中this的本质 window this -- 函数属于谁 <script type="text/javascript& ...

  4. JS高级---逆推继承看原型

    逆推继承看原型 function F1(age) { this.age = age; } function F2(age) { this.age = age; } F2.prototype = new ...

  5. JS高级---面向对象的编程思想(贪吃蛇梳理)

    面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...

  6. JS高级 - 面向对象4(json方式面向对象)

    把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu. ...

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

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

  8. JS高级 - 面向对象2(prototype定义)

    定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象. 语法 object.prototype.name=val ...

  9. JS高级——面向对象方式解决tab栏切换问题

    注意事项 1.给li元素注册事件,函数里面的this指的li元素,那么我们可以在注册事件之前将Tab对象用that=this进行保存 2.使用沙箱模式,所以暴露给外面的变量使用的是window.tab ...

随机推荐

  1. java实现Md5加密工具类

    场景:平常我们用户注册的密码保存到数据库都不会是明文存储的.都是经过加密之后的.因为保证用户的安全性.我们通常是用md5算法来加密的. 这个只能算是一个工具类.没必要了解里面是怎么实现的.拿来用就可以 ...

  2. Spark2.1.0安装

    1.解压安装spark tar zxf spark-2.1.O-bin-2.6.0-CDH5.10.0.tgz 2.修改配置文件 vim /etc/profile export SPARK_HOME= ...

  3. JAVA迭代器学习--在JAVA中实现线性表的迭代器

    1,迭代器是能够对数据结构如集合(ADT的实现)进行遍历的对象.在遍历过程中,可以查看.修改.添加以及删除元素,这是它与一般的采用循环来遍历集合中的元素不同的地方.因为,通常用循环进行的遍历操作一般是 ...

  4. spring boot(十):定时任务

    springboot默认已经帮我们实行了,只需要添加相应的注解就可以实现. 1.pom包配置 <dependency> <groupId>org.springframework ...

  5. 关于Mac OS虚拟机下共享文件夹的方法

    1.确保左上角苹果标志的旁边是“Finder”: 2.点击"Finder": 3.选择“偏好设置设置”: 4.然后在“通用”标签下勾选“已连接服务器”: OK,搞定!   完成以上 ...

  6. 51nod1222 最小公倍数计数

    题目来源: Project Euler 基准时间限制:6 秒 空间限制:131072 KB 分值: 640  定义F(n)表示最小公倍数为n的二元组的数量. 即:如果存在两个数(二元组)X,Y(X & ...

  7. odp.net连接方式,部署问题总结

      一. 摘要 在C#开发的过程中,经常需要操作Oracle数据库,而实际在部署程序的时候,经常要根据系统环境(32.64bit).不安装Oracle客户端等等需求,而Odp.net 也没有完美兼容的 ...

  8. springboot使用elasticsearch报No property index found for type错误

    一.前提:项目之前使用springboot+spring-data-mongodb.现在需要加入elasticsearch做搜索引擎,这样mongo和elasticsearch共存了. 二.报错信息: ...

  9. Web开发之404小结

    404算是Web工程里最常见的错误代号了.今天做一个小结: 场景:[Tomcat运行正常,但无法访问自己建的项目:404] 结果:在URL拼写正确的情况下,无法访问目标工程任何页面 信息:[404]: ...

  10. python之functools partial

    from functools import partial def aa(a,b,c): print ('a :',a) print ('b :',b) print ('c :',c) bb=part ...