gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

JavaScript學(xué)習(xí)總結(jié)之原型對象(整理分享)

本篇文章給大家?guī)砹岁P(guān)于JavaScript中原型對象的相關(guān)知識,希望對大家有幫助。

JavaScript學(xué)習(xí)總結(jié)之原型對象(整理分享)

你理解的類?類的特性有哪些?(封裝,繼承,多態(tài))

類實際是一個“特殊的函數(shù)”,就像你能夠定義的函數(shù)表達式和函數(shù)聲明一樣,類語法也由兩個組成部分:類聲明和類表達式。類的主體都是在嚴(yán)格模式下執(zhí)行的。

類的類體是由一對花括號{}中的部分,這是定義類成員的位置。【成員主要是方法或者構(gòu)造函數(shù)】

類的所有方法都等價于是定義在類的prototype屬性上。在類的實列上調(diào)用方法,等同于在調(diào)用原型上的方法。

class A(){     constructor(){}     a(){}     b(){} } //等價于 A.prototype={constructor(){},a(){},b(){}}

組成:

  • 構(gòu)造函數(shù):

constructor方法是一個特殊的方法,這種方法用于創(chuàng)建和初始化一個由class創(chuàng)建的對象。一個類只能有一個構(gòu)造函數(shù),如果多個會報錯,如果沒有會默認(rèn)添加一個空的constructor。其中constructor默認(rèn)返回實列對象【即this】。一個構(gòu)造函數(shù)可以使用super關(guān)鍵字來調(diào)用一個父類的構(gòu)造函數(shù)。

  • 屬性

  • 原型方法:該方法不需要加上function關(guān)鍵字,直接把函數(shù)的定義放進去就可以了。方法和方法之間不能用逗號分隔,會報錯。

  • 靜態(tài)方法:使用static定義靜態(tài)方法,調(diào)用靜態(tài)方法,不能類的實列去調(diào)用,只能使用類去調(diào)用。

  • 取值函數(shù)getter和存值函數(shù)setter:在類中使用get和set關(guān)鍵字,對某個屬性設(shè)置存值和取值函數(shù),攔截該屬性的存取行為。

類語法:

  • 類聲明:使用class關(guān)鍵字

class Rectangle{     constructor(height,width){         this.height=height;         this.width=width;     } }

注意:函數(shù)聲明和類聲明的區(qū)別:類聲明不會提升,函數(shù)聲明會提升。

類表達式:類表達式可以是被命名的或匿名的。賦予一個命名類表達式的名稱是類的主體的本地名稱。

 let Rectangle=class{//匿名類       constructor(height,width){             this.height=height;             this.width=width;         }  }  let Rectangle= class Rectangle{//命名類       constructor(height,width){             this.height=height;             this.width=width;         }  }

使用extends創(chuàng)建子類:

extends關(guān)鍵字在類聲明或類表達式中用于創(chuàng)建一個類作為另一個類的子類。

使用super調(diào)用超類:

super關(guān)鍵字用于調(diào)用對象的父對象上的函數(shù)

類的特性:

– 封裝:主要是通過函數(shù),私有屬性和方法的設(shè)置主要是通過塊級作用域?qū)崿F(xiàn)

– 多態(tài):可以通過函數(shù)調(diào)用,因為參數(shù)是可以多變的

– 繼承:主要通過原型鏈

當(dāng)我們在new一個普通函數(shù)時候,發(fā)生了什么?

  • 以構(gòu)造器的 prototype 屬性(注意與私有字段 [[prototype]] 的區(qū)分)為原型,創(chuàng)建新對象;

  • 將this 和調(diào)用參數(shù)傳給構(gòu)造器,執(zhí)行;

  • 如果構(gòu)造器返回的是對象,則返回,否則返回第一步創(chuàng)建的對象。

new 這樣的行為,試圖讓函數(shù)對象的語法跟類變得相似,但是,它客觀上提供了兩種方式,一是在構(gòu)造器中添加屬性,二是在構(gòu)造器的 prototype 屬性上添加屬性。

new后面的函數(shù)名一定要大寫嗎?

不是,主要是為了便于區(qū)分類。一般約束為大寫

如何理解ProtoType?查找一個對象的某個屬性的過程?

prototype:

每個函數(shù)都有一個特殊的屬性叫做原型對象【prototype】

js是基于原型的語言,每個對象都擁有一個原型對象,對象以其原型為模板、從原型繼承方法和屬性。這些屬性和方法時定義在對象的構(gòu)造函數(shù)之上的prototype屬性上,而非對象的實例本身。

原型對象可以再擁有原型對象,并從中繼承方法和屬性,一層一層,層層向上直到一個對象的原型對象為 null,這種就是原型鏈。

創(chuàng)建對象實例時,對象的實例和它的構(gòu)造器之間建立一個鏈接【__proto__屬性,是從構(gòu)造函數(shù)的prototype屬性派生的。也就是__proto__與構(gòu)造函數(shù)的prototype是指向同個對象】Object.getPrototypeof(new Foobar())和Foobar.prototype是相等的。

Object.create()。是從指定的原型對象,創(chuàng)建一個新對象。var newObj=Object.create(obj)。則newObj的__proto__=obj

每個實列對象都從原型中繼承了一個constructor屬性。該屬性指向了構(gòu)造此實例的構(gòu)造函數(shù)。

一般都是構(gòu)造器中定義屬性,在prototype定義方法。

一般由構(gòu)造函數(shù)實列化出一個新對象,新對象的原型對象是一個constructor和一個Object的原型對象組成。而函數(shù)構(gòu)造函數(shù)的原型對象是也是由另外一個constructor和一個Function的原型對象組成。

    var F=function(){};     Object.prototype.a=function(){};     Function.prototype.b=function(){};     var f=new F();     //上面的結(jié)果是,f能取到a,不能取到b.     詳解:         1.f.__proto__===F.prototype         2.F.prototype.__proto__===Object.prototype(所以f可以訪問a)         3.f.constructor===F         4.F.__proto__===Function.prototype(所以f.constructor.b可以訪問)

查找屬性的過程:

1.先查找自己身屬性是否由包含該屬性。

2.如果沒有,才會沿著原型鏈,層層向上搜索,直到找到名字的屬性

3.如果找到最后原型鏈的末尾,即最后的原型為null,那就是沒有找到該屬性。就會返回undefined

不同方法創(chuàng)建對象和原型鏈

1.使用語法結(jié)構(gòu)創(chuàng)建對象

var o = {a: 1}; // o 這個對象繼承了 Object.prototype 上面的所有屬性 // o 自身沒有名為 hasOwnProperty 的屬性 // hasOwnProperty 是 Object.prototype 的屬性 // 因此 o 繼承了 Object.prototype 的 hasOwnProperty // Object.prototype 的原型為 null // 原型鏈如下: // o ---> Object.prototype ---> null var a = ["yo", "whadup", "?"]; // 數(shù)組都繼承于 Array.prototype  // (Array.prototype 中包含 indexOf, forEach 等方法) // 原型鏈如下: // a ---> Array.prototype ---> Object.prototype ---> null function f(){ return 2; } // 函數(shù)都繼承于 Function.prototype // (Function.prototype 中包含 call, bind等方法) // 原型鏈如下: // f ---> Function.prototype ---> Object.prototype ---> null

2.使用構(gòu)造函數(shù)創(chuàng)建對象

function A() { this.a = 1; this.b = 2; } A.prototype = { write: function(){     console.log(this.a); } }; var a = new A(); // a 是生成的對象,他的自身屬性有 'a' 和 'b'。

3.使用Object.create()創(chuàng)建對象(ES5)

var a = {a: 1};  // a ---> Object.prototype ---> null var b = Object.create(a); // b ---> a ---> Object.prototype ---> null console.log(b.a); // 1 (繼承而來) var c = Object.create(b); // c ---> b ---> a ---> Object.prototype ---> null var d = Object.create(null); // d ---> null console.log(d.hasOwnProperty); // undefined, 因為d沒有繼承Object.prototype 使用

4.使用class創(chuàng)建對象(ES6)

class A { constructor(a, b) {     this.a = a;     this.b = b; } } class B extends A { constructor(a,b,c) {     super(a, b);     this.c=c; } get ab() {     return this.a + this.b; } set d(d) {     this.a = d;     this.b = d;     this.c = d; } } var a= new A('a','b');//a的原型對象是 A.prototype var b = new B('a','b','c');//    //b的原型對象是 B.prototype

當(dāng)一個對象設(shè)置屬性時都發(fā)生了什么?

如果對象包含普通數(shù)據(jù)訪問屬性,直接賦值只會修改屬性值

var a={b=1}//因為b是a的普通屬性,數(shù)據(jù)類型為Number

a.b="a"; //直接更改b的類型為String,且賦值為'a'.

如果對象找不到該屬性,且原型鏈也找不到,就直接默認(rèn)添加一個屬性到該對象上。

var a={}//b不是a的普通屬性,且原型鏈上也沒有

a.b="a"; //直接在a上添加b的類型,為String,且賦值為'a'.

如果屬性b,存在于原型鏈上

//在原型鏈上層存在名為b的普通數(shù)據(jù)訪問屬性并且沒有標(biāo)記為只讀(writable:false),那就會直接在a中添加一個名為b的新屬性,且值為'a'。而原型鏈上的b就會被屏蔽掉:

    function A(){};     A.prototype.b=1;     var a=new A();     a.b='a';

//在原型鏈上層存在b,但是他被標(biāo)記為只讀,那么無法修改已有屬性,或者在a中創(chuàng)建屏蔽屬性。如果運行在嚴(yán)格模式下,代碼會拋出一個錯誤,否則,這條賦值語句會被忽略,總之,不會發(fā)生屏蔽。

    function A(){     }; A.prototype.b=1     Object.defineProperty(A.prototype,'b',{         configurable:true,         writable:false     })     var a=new A();     a.b='a';//結(jié)果a.b還是1

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
男女污污视频网站| 亚洲国产精品久久久久婷蜜芽| 国产福利一区视频| 国产精品视频一区二区三区四区五区| 国产xxxx振车| 欧美视频在线观看网站| 日韩av高清在线看片| 精品这里只有精品| 农村妇女精品一二区| 国产极品粉嫩福利姬萌白酱| 大肉大捧一进一出好爽动态图| 黑人粗进入欧美aaaaa| 国内自拍视频网| www亚洲国产| 成人免费播放器| 国产第一页视频| 亚洲妇熟xx妇色黄蜜桃| 免费网站在线观看视频| 国产日韩一区二区在线观看| 国产情侣av自拍| 中文字幕第三区| 浮妇高潮喷白浆视频| 伊人网在线综合| 日本男女交配视频| 高清一区在线观看| 日韩a级黄色片| 色婷婷狠狠18| 精品视频在线观看一区| 亚洲精品久久久久久宅男| 精品国产一区二区三区无码| 日韩av片网站| 人妻夜夜添夜夜无码av| 国模私拍视频在线观看| 免费拍拍拍网站| 视频在线观看免费高清| 日韩一级性生活片| 亚洲网中文字幕| 国产l精品国产亚洲区久久| 91社在线播放| 日韩av卡一卡二| 国产91美女视频| 久久久99精品视频| 国产乱叫456| 黑鬼大战白妞高潮喷白浆| 久久99久久99精品| 国产91av视频在线观看| 亚洲一级片免费| 免费av网址在线| 久久国产亚洲精品无码| 久久久无码中文字幕久...| 手机免费av片| 久久国产激情视频| 亚洲精品视频导航| 无码无遮挡又大又爽又黄的视频| 日本人体一区二区| 免费网站在线观看视频| 屁屁影院ccyy国产第一页| 日本三级福利片| 成人国产一区二区三区| 大地资源网在线观看免费官网| 亚洲综合伊人久久| 超碰中文字幕在线观看| 国产a级片免费看| 国产精品av免费| 永久av免费在线观看| 黄色免费高清视频| 国产 国语对白 露脸| 伊人再见免费在线观看高清版| 欧美日韩中文字幕在线播放| 91网站在线观看免费| 中文字幕无码精品亚洲资源网久久| 久久男人资源站| 青青草原av在线播放| 亚洲乱码国产一区三区| 不卡的在线视频| 咪咪色在线视频| 欧美人成在线观看| 日本精品一区二区三区四区| 噼里啪啦国语在线观看免费版高清版| 亚洲中文字幕久久精品无码喷水| 成人亚洲精品777777大片| а 天堂 在线| 九色自拍视频在线观看| 日韩中文字幕免费在线| 国产成人美女视频| 欧美极品少妇无套实战| 日韩亚洲在线视频| www.日本久久| 免费在线激情视频| 精品少妇人妻av一区二区| 欧美午夜性视频| 午夜视频在线网站| 久久综合九色综合88i| 蜜臀一区二区三区精品免费视频| 三级在线免费观看| 手机看片福利日韩| 奇米777四色影视在线看| mm1313亚洲国产精品无码试看| 国产福利片一区二区| 青青青免费在线| 色噜噜狠狠一区二区三区狼国成人| 2019日韩中文字幕mv| 亚洲激情在线看| 国产精品va无码一区二区| 99久久久无码国产精品性色戒| 男人日女人bb视频| 人人妻人人澡人人爽欧美一区| 欧美日韩大尺度| 国产av天堂无码一区二区三区| 午夜影院免费观看视频| 日本美女高潮视频| 久久久久久久久久久视频| japanese在线播放| 亚洲天堂一区二区在线观看| 欧美一级特黄a| 欧美视频第三页| 国产免费毛卡片| 欧美精品久久久久久久久久久| 亚洲成人动漫在线| 亚洲天堂av免费在线观看| 国产区二区三区| 欧美精品第三页| 嫩草av久久伊人妇女超级a| 欧美 日韩 国产 高清| 久草免费福利在线| 全黄性性激高免费视频| 日韩精品一区二区在线视频| 中文字幕第50页| 51xx午夜影福利| 69精品丰满人妻无码视频a片| 久久精品在线免费视频| 久久久久久久久久伊人| 草草草视频在线观看| 妺妺窝人体色www看人体| 国产女主播自拍| 日韩中文字幕在线免费| 日韩国产欧美亚洲| 大香煮伊手机一区| 尤物国产在线观看| 一区二区三区日韩视频| 色偷偷中文字幕| 国产成人永久免费视频| 国产精品自拍片| 亚欧在线免费观看| 中文字幕55页| 全黄性性激高免费视频| wwwxxx黄色片| 在线观看视频在线观看| 97超碰国产精品| 国产精品亚洲a| 日韩av片免费观看| 日韩黄色短视频| 国产三级三级看三级| 免费观看黄色大片| 久草热视频在线观看| 一路向西2在线观看| 免费观看国产视频在线| 国产免费黄色av| 992tv成人免费观看| 国产一级片黄色| 屁屁影院ccyy国产第一页| 无码日韩人妻精品久久蜜桃| 成人午夜免费剧场| 成人午夜激情av| 91.com在线| 天天操精品视频| 国产成人av影视| 久草视频这里只有精品| 91亚洲免费视频| 免费无码国产v片在线观看| 免费不卡av网站| 日韩精品你懂的| www.浪潮av.com| 日本福利视频一区| 欧美美女黄色网| 污污视频网站在线| 欧美伦理片在线看| 能在线观看的av| av之家在线观看| 久久久亚洲国产精品| 国产精品99久久久久久大便| 国产无套粉嫩白浆内谢的出处| 亚洲人精品午夜射精日韩| 国产日产欧美一区二区| 欧美在线a视频| 第一区免费在线观看| 男人插女人下面免费视频| 日本精品www| 可以免费观看av毛片| 美脚丝袜脚交一区二区| 欧美大黑帍在线播放| av在线免费观看国产| 国产精品视频一二三四区| 免费观看国产视频在线| 看一级黄色录像| 天天做天天爱天天高潮| 天天干天天色天天爽| 黄色影视在线观看| 久久男人资源站| 无码专区aaaaaa免费视频|