<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继承来的

最新文章

  1. C语言 &#183; 4-3水仙花数
  2. Android中点击事件的实现方式
  3. oracle优化:避免全表扫描(高水位线)
  4. 阿里云消息队列MQ_HTTP接入 for .NetCore 简单例子
  5. 【HDU 5833】Zhu and 772002(异或方程组高斯消元)
  6. 接入多家ERP厂商,美团点评餐饮高速路开启
  7. java框架篇---spring aop两种配置方式
  8. Kettle_设置全局变量
  9. nyoj 44 子串和
  10. 4. 在Inspector面板中显示类中变量+ 拓展编辑器
  11. 统一建模语言(UML) 版本 2.0
  12. EFI/GPT探索(为何win7分区时创建100M隐藏分区)
  13. day 14:深浅copy,数据结构 ,函数,set集合,变量作用域、返回值
  14. HTTP 协议中 GET 和 POST 方法详解
  15. 移动端调试神器-vConsole
  16. Zookeeper运维小结--CancelledKeyException
  17. python学习笔记-列表和字典
  18. fastreport报表中出现十字线
  19. 【Java】 剑指offer(55-1) 二叉树的深度
  20. Genymotion模拟器出现INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法

热门文章

  1. 设置MyBatis在控制台打印SQL语句
  2. div显示提示信息【转】
  3. Java编程思想 学习笔记12
  4. 03-Windows Server 2016 IIS的安装与配置
  5. centos 修改文件权限
  6. Python生成唯一id的方法
  7. luogu P3565 [POI2014]HOT-Hotels
  8. AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数
  9. Python 对图片进行人脸识别
  10. keras例子-matchnet