亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js原型鏈與繼承解析(初體驗)

2019-11-20 10:07:38
字體:
來源:轉載
供稿:網友

首先定義一個對象obj,該對象的原型為obj._proto_,我們可以用ES5中的getPrototypeOf這一方法來查詢obj的原型,我們通過判斷obj的原型是否與Object.prototype相等來證明是否存在obj的原型,答案返回true,所以存在。然后我們定義一個函數foo(),任何一個函數都有它的prototype對象,即函數的原型,我們可以在函數的原型上添加任意屬性,之后通過new一個實例化的對象可以共享其屬性(下面的兩個例子會詳細介紹)。

function foo(){}foo.prototype.z = 3;var obj = new foo();obj.x=1;obj.y=2;obj.x //1obj.y //2obj.z //3typeof obj.toString; //functionobj.valueOf(); // foo {x: 1, y: 2, z: 3}obj.hasOwnProperty('z'); //false

在這里,obj的原型(_proto_)指向foo函數的prototype屬性,foo.prototype的原型指向Object.prototype,原型鏈的末端則為null,通過hasOwnProperty來查看z屬性是否是obj上的,顯示false,則obj上本沒有z屬性,但通過查找其原型鏈,發現在foo.prototype上有,所以obj.z=3,并且對于首例上obj.valueOf()以及toString都是Object.prototype上的,所以任何一個對象都有這兩個屬性,因為任何一個對象的原型都是Object.prototype.當然除了以下一個特例,

var obj2 = Object.create(null);obj2.valueOf(); //undefined

Object.create()為創建一個空對象,并且此對象的原型指向參數。下面一個綜合實例向大家展示一下如何實現一個class來繼承另外一個class

//聲明一個構造函數Personfunction Person(name,age){  this.name = name;  this.age = age;}Person.prototype.hi = function (){  console.log('Hi,my name is ' + this.name +',my age is '+this.age);};Person.prototype.LEGS_NUM=2;Person.prototype.ARMS_NUM=2;Person.prototype.walk = function (){  console.log(this.name+' is walking !');};function Student(name,age,classNum){  Person.call(this,name,age);  this.classNum = classNum;}//創建一個空對象Student.prototype = Object.create(Person.prototype);//constructor指定創建一個對象的函數。Student.prototype.constructor = Student;Student.prototype.hi = function (){  console.log('Hi,my name is ' + this.name +',my age is '+this.age+' and my class is '+this.classNum);};Student.prototype.learns = function (sub){  console.log(this.name+' is learning '+sub);};//實例化一個對象Bosnvar Bosn = new Student('bosn',27,'Class 3');Bosn.hi(); //Hi,my name is bosn,my age is 27 and my class is Class 3Bosn.LEGS_NUM; //2Bosn.walk(); //bosn is walking !Bosn.learns('Math'); //bosn is learning Math

構造函數Person與Student的this指向實例化的對象(Bosn),并且此對象的原型指向構造器的prototype。

我們用Object.create()方法來創建一個空對象,此對象的原型事項Person.prototype,這樣寫的好處是我們可以在不影響Person.prototype屬性的前提下可以自己創建Studnet.prototype的任意屬性,并且可以繼承Person.prototype上原有的屬性,因為子類Student是繼承基類Person的。如果直接寫Person.prototype = Student.prototype,那他兩同時指向一個對象,在給Student.prototype添加屬性的同時,Person的原型鏈上也會增加同樣的屬性。

對于構造函數Student里面的call方法,里面的this指向新創建的Student的實例化的對象,并通過call來實現繼承。

Student.prototype.constructor = Student,這句話的含義是指定Student為創建Student.prototype這個對象的函數,如果不寫這句話,該對象的函數還是Person。

對于繼承,一共有三種方式來實現,

function Person(name,age){  this.name = name;  this.age = age;}function Student(){}Student.prototype = Person.prototype; //1Student.prototype = Object.create(Person.prototype); //2Student.prototype = new Person(); //3

以上這篇js原型鏈與繼承解析(初體驗)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩第一页在线| 97色在线观看| 中文字幕免费国产精品| 久久亚洲欧美日韩精品专区| 久热精品视频在线观看一区| 亚洲最大福利视频网站| 精品在线小视频| 国产欧美欧洲在线观看| 国产视频综合在线| 欧美综合在线观看| 国产日本欧美在线观看| 成人免费视频网址| 久久久999精品| 亚洲欧美第一页| 亚洲福利在线播放| 欧美在线免费观看| 91啪国产在线| 日韩欧美精品网址| 在线观看日韩欧美| 国产日本欧美视频| 欧美成人免费播放| 久热在线中文字幕色999舞| 国产精品久久久久久久久久ktv| 亚洲视频一区二区| 中文字幕亚洲无线码a| 国产精品亚洲美女av网站| 国产日韩欧美91| 久久久久久久久久久成人| 欧美日韩国产在线| 亚洲电影免费观看高清完整版在线观看| 欧美黄色性视频| 国产精品老女人精品视频| 国产日韩欧美夫妻视频在线观看| 欧美色视频日本高清在线观看| 欧美性猛交视频| 欧美自拍视频在线| 色爱精品视频一区| 欧美一区二粉嫩精品国产一线天| 91香蕉嫩草影院入口| 亚洲精品在线不卡| 欧美专区日韩视频| 国产va免费精品高清在线| 国产精品久久久久91| 欧美极品xxxx| www欧美日韩| 久久91精品国产| 亚洲人午夜精品免费| 66m—66摸成人免费视频| 日韩免费视频在线观看| 国内精品中文字幕| 亚洲人成电影网站色xx| 亚洲色图校园春色| 91精品国产免费久久久久久| 国产精品jvid在线观看蜜臀| 久色乳综合思思在线视频| 亚洲精选在线观看| 欧美精品video| 国产欧美一区二区三区四区| 亚洲女人天堂成人av在线| 成人国产亚洲精品a区天堂华泰| 国产盗摄xxxx视频xxx69| 国产视频一区在线| 日本sm极度另类视频| 欧美日韩免费网站| 欧美成人精品不卡视频在线观看| 国产裸体写真av一区二区| 久久久久久69| 国产精品wwwwww| 欧美电影免费观看高清完整| 欧美在线一级va免费观看| 2021国产精品视频| 蜜臀久久99精品久久久久久宅男| 国产精品白丝av嫩草影院| 日韩欧美黄色动漫| 日韩美女av在线免费观看| 精品久久久久久久久久久| 最近中文字幕2019免费| 亚洲国产精品va在线观看黑人| 久久久久久尹人网香蕉| 18一19gay欧美视频网站| 午夜精品福利电影| 欧美精品videofree1080p| 亚洲小视频在线观看| 中文字幕久精品免费视频| 日韩电视剧在线观看免费网站| 久久99热精品| 91精品久久久久久综合乱菊| 亚洲精品福利免费在线观看| 欧美电影在线观看网站| 日本在线观看天堂男亚洲| 欧美在线精品免播放器视频| 68精品久久久久久欧美| 久热精品在线视频| 亚洲精品一区二区久| 欧美多人乱p欧美4p久久| 久久在线免费视频| 亚洲精品国产拍免费91在线| 夜夜嗨av色一区二区不卡| 97热在线精品视频在线观看| 国产99久久精品一区二区| 久久久久久综合网天天| 日韩av日韩在线观看| 国产女同一区二区| 国色天香2019中文字幕在线观看| 日韩精品视频免费专区在线播放| 欧美国产日韩在线| 日韩欧美中文在线| 成人激情免费在线| 97久久精品人搡人人玩| 日韩av在线网| 亚洲精品之草原avav久久| 美日韩精品免费视频| 亚洲精品一区av在线播放| 日韩一区二区av| 欧美性xxxx极品hd欧美风情| 最新的欧美黄色| 亚洲第一精品夜夜躁人人爽| 亚洲欧美日韩一区二区在线| 久久久久国色av免费观看性色| 在线免费观看羞羞视频一区二区| 成人淫片在线看| 国产精品美女免费| 欧美专区在线观看| 久久精品国产一区二区电影| 丝袜一区二区三区| 国产主播欧美精品| 国产成人啪精品视频免费网| 亚洲男人天堂古典| 亚洲精品国产精品国产自| 亚洲性av网站| 国产成人精品在线| 91免费看视频.| 欧美激情视频三区| 麻豆一区二区在线观看| 成人在线免费观看视视频| 久久精品中文字幕电影| 日韩精品免费电影| 国产精品一二三视频| 亚洲自拍小视频免费观看| 国产丝袜一区视频在线观看| 日韩在线播放一区| 精品国产乱码久久久久久天美| 91精品国产乱码久久久久久蜜臀| 亚洲福利小视频| 中国china体内裑精亚洲片| 欧美国产激情18| 亚洲欧美第一页| 成人免费观看a| 欧美日韩国产激情| 欧美成人精品一区二区| 亚洲国产91精品在线观看| 欧美日韩国产精品一区二区不卡中文| 久久精品色欧美aⅴ一区二区| 欧美一区在线直播| 久久天天躁日日躁| 成人激情视频网| 国产999精品久久久| 亚洲一区999| 色悠悠久久88| 中文字幕亚洲无线码在线一区| 国产欧美日韩亚洲精品| 日韩亚洲精品电影| 上原亚衣av一区二区三区| 国产精品日韩久久久久|