當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS高级 - 面向对象5(继承,引用)
生活随笔
收集整理的這篇文章主要介紹了
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里面所有的對象全是引用。
如果我不希望是一個引用,我希望我修改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(继承,引用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 1924 [Sdoi2010
- 下一篇: CODE FESTIVAL 2017 q