JS高级 - 面向对象5(继承,引用)
2017-10-06 21:05
513 查看
<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);//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高级程序设计--面向对象的理解(包括原型和继承)
- js面向对象、原型及继承(javaScript高级程序设计第3版)
- JS高级知识(面向对象,原型,原型链理解,继承)
- js高级程序设计笔记3--继承
- js面向对象之继承-原型继承
- JS面向对象,从创建对象到对象继承
- 4.高级js--(面向对象js)_2
- js 学习面向对象的继承
- 一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……
- js面向对象与继承
- js面向对象之继承那点事儿根本就不是事
- JS面向对象(封装,继承)
- JavaScript高级 面向对象(5)--最简单的继承方式,混入mix
- js--面向对象--构造函数的继承
- 高级面向对象之 类式继承
- C#基础知识复习1代码规范-执行流程(c#)-面向对象-引用命名空间-封装-继承-访问修饰符-虚方法-静态成员-多态-抽象类等
- JS高级 - 面向对象4(json方式面向对象)
- JS面向对象,从创建对象到对象继承
- JavaScript高级程序设计之面向对象的程序设计之继承之原型式继承第6.3.4讲笔记
- 捋一捋js面向对象的继承问题