亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

小白,請教各位大佬!對比一下Typescript中的{}和object和Object?

小白,請教各位大佬!對比一下Typescript中的{}和object和Object?

海綿寶寶撒 2019-06-21 16:20:08
leta:{}=1;//Okletb:object=1;//Errorletc:Object=1;//Ok,
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

首先Object與{}應該很好理解:
Object:一個對象,但是是包含了js原始的所有公用的功能。查看ts源碼可以了解詳情Object
{}:一個空對象實例,無原型鏈,但是原生的jsObject屬性和方法還是可以支持的
constobj01={};
constobj02=Object;
console.log(obj01.prototype);//undefined
console.log(obj02.prototype);//...
console.log(obj01.__proto__===obj02.prototype);//true
console.log(obj01.toString());//"[objectObject]"
然后object:
object:可以理解為一個新的對象屬性,ES6引入,可以看一下它的用例->WeakMap,同樣是鍵值對集合,特殊在鍵值也必須是對象。
interfaceWeakMap{
...
}
我的理解是這樣,希望能有所幫助:)
                            
查看完整回答
反對 回復 2019-06-21
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

以下均假定strict=true
{}(type):按照規范是emptyobjecttype,但可以是primitive(即實際行為是除了null和undefined,可能是因為autoboxing)
Object(type):同上
object(type):除了primitives和null和undefined,即"不autobox就已經是Object"
總之有點混亂,因為ts里除了正常的supertype/subtype還有個"AssignmentCompatibility"
                            
查看完整回答
反對 回復 2019-06-21
  • 2 回答
  • 0 關注
  • 1638 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號