第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

js里的繼承是怎樣的

??? function Exx(){}
??? Exx.prototype.z = 1;
??? var obj = new Exx();
??? console.log(obj instanceof Object);//true 能證明所有對(duì)象皆是繼承自O(shè)bject嗎?
??? var des = Object.getOwnPropertyDescriptor(Object,"prototype");//正確
?var des = obj.getOwnPropertyDescriptor(Object,"prototype");//錯(cuò)誤? 沒有這個(gè)方法,為什么,不是繼承自那個(gè)對(duì)象嗎
var des = obj.getOwnPropertyDescriptor(obj,"prototype");//錯(cuò)誤 obj不是也應(yīng)該有這個(gè)屬性嗎
var des = Object.getOwnPropertyDescriptor(Exx,"prototype");//錯(cuò)誤 ?
var des = Exx.getOwnPropertyDescriptor(Exx,"prototype");//錯(cuò)誤 ?

正在回答

4 回答

你的問題太多太零散了,我挑重點(diǎn)的回答下。


prototype是函數(shù)對(duì)象默認(rèn)就會(huì)有一個(gè)對(duì)象屬性。本身也是對(duì)象,它的作用是:作為通過new 構(gòu)造函數(shù)調(diào)用時(shí)產(chǎn)生的對(duì)象的原型。


JS是基于原型鏈繼承的,和Java/C#這種基于類繼承的語言有很大不同,后面OOP會(huì)展開講解,不是一句兩句說得清楚的。感興趣也可以自己查閱JavaScript OOP相關(guān)資料。


函數(shù)是對(duì)象并不只是JavaScript這樣做,這叫做first class function(第一類函數(shù))特性,很多語言都有。百度一下。



3 回復(fù) 有任何疑惑可以回復(fù)我~
function?Exx(){}
Exx.prototype.z?=?1;
var?obj?=?new?Exx();
console.log(obj?instanceof?Object);//問題1:?true?能證明所有對(duì)象皆是繼承自O(shè)bject嗎?
var?des?=?Object.getOwnPropertyDescriptor(Object,"prototype");//正確
var?des?=?obj.getOwnPropertyDescriptor(Object,"prototype");//問題2:錯(cuò)誤??沒有這個(gè)方法,為什么,不是繼承自那個(gè)對(duì)象嗎
var?des?=?obj.getOwnPropertyDescriptor(obj,"prototype");//問題3.?錯(cuò)誤?obj不是也應(yīng)該有這個(gè)屬性嗎
var?des?=?Object.getOwnPropertyDescriptor(Exx,"prototype");//錯(cuò)誤??
var?des?=?Exx.getOwnPropertyDescriptor(Exx,"prototype");//錯(cuò)誤

問題1: true 能證明所有對(duì)象皆是繼承自O(shè)bject?

答:instanceof檢查的是左邊對(duì)象的原型鏈上是否有右邊構(gòu)造器的prototype屬性。(詳看第一章數(shù)據(jù)類型有instanceof的講解),一般情況下,對(duì)象字面量、一般函數(shù)構(gòu)造器用new構(gòu)造的對(duì)象,原型鏈上都會(huì)有Object.prototype, 所以instanceof Object返回true,但并不是所有對(duì)象都這樣。例如:

var?obj?=?Object.create(null);?//?這里指定創(chuàng)建一個(gè)原型為null的對(duì)象
obj?instanceof?Object;?//false

問題2:錯(cuò)誤 ?沒有這個(gè)方法,為什么,不是繼承自那個(gè)對(duì)象嗎?
getOwnPropertyDescriptor是Object構(gòu)造器函數(shù)對(duì)象上的方法,而不是Object.prototype上的方法,所以不可以直接在一般對(duì)象上調(diào)用getOwnPropertyDescriptor。


問題3. 錯(cuò)誤?obj不是也應(yīng)該有這個(gè)屬性嗎?

同2,例如Object.prototype.toString方法存在,所以一般對(duì)象都有toString可以使用:

var obj = {};

obj.toString; // function

但getOwnPropertyDescriptor是Object函數(shù)對(duì)象上的方法,而不是Object.prototype上的方法,不會(huì)出現(xiàn)在所有一般的對(duì)象上。

3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

xiao_bao2014 提問者

function Person(){}; function Student(){}; Student.prototype = new Person(); var s = new Student(); s instanceof Person; 又看了一遍您那個(gè)nstanceof js的類的protype竟然是指向一個(gè)new后的實(shí)例來實(shí)現(xiàn)繼承的 protype上可以放基礎(chǔ)變量可以放對(duì)象 還包含著指向?qū)嵗闹羔槨静恢滥懿荒芙兄羔槨??剛深入看js有點(diǎn)暈
2015-01-29 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Bosn 回復(fù) xiao_bao2014 提問者

JS中木有指針的概念呀,反復(fù)的看一下原型鏈的小節(jié)吧,如果有問題,恢復(fù)帖子把問題寫的具體點(diǎn)喲~~~另外建議開新帖,這種回復(fù)我收不到消息通知...
2015-01-29 回復(fù) 有任何疑惑可以回復(fù)我~

建議去看阮一峰javascript技術(shù)blog。

0 回復(fù) 有任何疑惑可以回復(fù)我~

聽您的解釋看我這樣說對(duì)嗎?

哦,這種是原型鏈繼承,只要不在prototype上的屬性就不會(huì)被繼承

除了那個(gè)var?obj?=?Object.create(null);外new出來的都有prototype,這對(duì)象可以有自己prototype上的變量甚至對(duì)象,

也指向了繼承自的上級(jí)prototype上的屬性 ,那prototype算是什么數(shù)據(jù)類型??

網(wǎng)上有說prototype是上級(jí)的實(shí)例,是上級(jí)的引用? js中有類和對(duì)象的概念嗎?和java有什么不同嗎?感覺js很隨意,一個(gè)函數(shù)就是一個(gè)對(duì)象,var?obj?=?new?Exx();?obj?的prototype和Exx的prototype ?是obj->Exx->Object 感覺不到類和對(duì)象的區(qū)分

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
JavaScript深入淺出
  • 參與學(xué)習(xí)       281095    人
  • 解答問題       1054    個(gè)

由淺入深學(xué)習(xí)JS語言特性,且解析JS常見誤區(qū),從入門到掌握

進(jìn)入課程

js里的繼承是怎樣的

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)