you don't know JavaScript(1)

you don't know JavaScript

object

  1. 對(duì)象的兩種創(chuàng)建方式

字面量的方式,new操作符創(chuàng)建

  1. 在對(duì)象中引用、創(chuàng)建、其他對(duì)象或函數(shù)的本質(zhì)含義

都只是對(duì)函數(shù)的引用,函數(shù)不屬于任何對(duì)象。

  1. 對(duì)象的屬性描述符有哪些?

vaule

writable

configurble

enumberable

get

set

  1. 對(duì)對(duì)象進(jìn)行一些限制性操作:凍結(jié)、常量化、封裝、密封;不同的操作之間的聯(lián)系?

常量化:writable:false;configurable:false;

禁止擴(kuò)展:Object.preventExtensions();

密封:Object.seal();世家還是那個(gè)等于:Object.preventExtensions() + configurable:false;

凍結(jié):Object.freeze();等于將對(duì)象密封后且不可讀,即Obejct.seal() + writable:false;

  1. 訪問(wèn)對(duì)象屬性和查找對(duì)象屬性的本質(zhì)?

通過(guò)描述符中set get去操作

  1. 對(duì)對(duì)象屬性的遍歷和對(duì)數(shù)組的遍歷有何不同?

對(duì)屬性的遍歷相當(dāng)于對(duì)索引的遍歷,而數(shù)組也可以對(duì)索引進(jìn)行遍歷,但我們往往最關(guān)心的是數(shù)組的值,所以存在遍歷數(shù)組值得方法

  1. enumerable 可控制對(duì)象的屬性是否可以出現(xiàn)在遍歷中,為false時(shí)屬性不會(huì)出現(xiàn)在for in 循環(huán)中

  2. 反問(wèn)對(duì)象的屬性,和訪問(wèn)一個(gè)變量在內(nèi)部機(jī)制上有什么不同?

當(dāng)訪問(wèn)一個(gè)對(duì)象及其原型鏈中不存在的屬性時(shí),會(huì)返回undefined,但訪問(wèn)一個(gè)當(dāng)前詞法作用域中不存在的變量時(shí),會(huì)拋出一個(gè)ReferenceError異常。

  1. 檢查一個(gè)對(duì)象中是否有某屬性的兩種方法?

  2. in 方法可以檢測(cè)對(duì)象中的屬性是否存在,問(wèn)什么不能檢測(cè)數(shù)組中是否有某值?

  3. for in 循環(huán)遍歷的是什么?為什么不能用它來(lái)遍歷數(shù)組中的值?

  4. 涉及Object 屬性的一些操作方法有哪些?

  5. 去查找對(duì)象的屬性時(shí),若對(duì)象中不存在該屬性會(huì)順著原型鏈回溯去查找該屬性值,怎樣區(qū)別屬性是對(duì)象自身的屬性還是原型鏈上的屬性?

Object.hasOwnPeoperty( );

  1. 什么是深不變性和淺不變性?

  2. in操作和Object.hasOwnProperty( )的區(qū)別?

(property in Object)會(huì)檢查該property是否存在于對(duì)象中以及它的原型鏈中;(in操作符只會(huì)檢查屬性名是否存在,而不會(huì)檢查值,所以不要用in操作符來(lái)檢查數(shù)組中的值)

Object.hasOwnPropery()只會(huì)檢查該property是否在在該對(duì)象中而不會(huì)延伸到對(duì)象的prototype中去。

  1. 在對(duì)象和數(shù)組中應(yīng)用for-in操作有什么不同?

由于for-in不僅會(huì)遍歷值得索引,還會(huì)遍歷所有屬性,所以如果用for-in來(lái)遍歷數(shù)組可能會(huì)造成數(shù)值和屬性混雜的問(wèn)題。

--

  • JavaScript中9種內(nèi)置對(duì)象類(lèi)型和5種基本類(lèi)型?

JavaScript中的內(nèi)置對(duì)象實(shí)際上是一些內(nèi)置的函數(shù),通過(guò)內(nèi)置函數(shù)、new操作符可以創(chuàng)建一個(gè)對(duì)應(yīng)子類(lèi)型的對(duì)象。通過(guò)字面量創(chuàng)建和通過(guò)內(nèi)置函數(shù)創(chuàng)建的不同點(diǎn)在于使用 typeof 檢測(cè)出來(lái)的類(lèi)型不一樣,如:


var str1 = 'i am a coder';

var str2 = new String("i am a coder");

typeof str1;//string

typeof str2;//object

str1 instanceof String;//true

str2 instanceof object;//false

但內(nèi)置對(duì)象中的null 、 undefined屬于特殊情況,它們只有自己的文字形式而沒(méi)有構(gòu)造形式。

  • 對(duì)象的屬性名都是字符串,即便是數(shù)組也是如此,數(shù)組的下標(biāo)就可以理解成是對(duì)象的屬性名,它們都是字符串形式。

  • 理解在對(duì)象中引用函數(shù)的本質(zhì),如:


var person = {

name:['jack','lina','ellon'],

findId:function() {

...//具體的函數(shù)操作

},

searchTel:searchTel

};

function searchTel() {

...//具體函數(shù)操作

};

從技術(shù)角度講,函數(shù)永遠(yuǎn)不屬于任何對(duì)象####

具體講:對(duì)象中屬性訪問(wèn)的函數(shù)和其他函數(shù)沒(méi)有任何區(qū)別,(除了可能發(fā)生的隱式綁定this外);上面代碼塊中的findId 和searchTel 都是對(duì)兩個(gè)不同的函數(shù)的引用,都不能說(shuō)是屬于person這個(gè)對(duì)象,即便findId是在person中定義的。

  • 數(shù)組也屬于對(duì)象,所以也可以給數(shù)組添加新屬性,但給數(shù)組添加一個(gè)命名屬性并不會(huì)增加數(shù)組的長(zhǎng)度(這個(gè)新屬性的屬性名要看起來(lái)不是一個(gè)整數(shù)),如果你給Array 添加的新屬性的屬性名看起來(lái)像一個(gè)整數(shù),則JavaScript引擎會(huì)把它當(dāng)做是數(shù)組的新值得下標(biāo),數(shù)組的Length也會(huì)隨之增長(zhǎng)。

  • 屬性描述符有哪些?

configurable

enumberable

writable

value

get

set

  • configurble:false;可以禁止對(duì)屬性的屬性描述符進(jìn)行更改,包括刪除該屬性;但可以對(duì)該屬性重新賦值。

  • delete 可以用來(lái)刪除屬性,但delete僅僅只是刪除而已,并不具備釋放內(nèi)存的功能。

對(duì)象的一些操作方法:

Object.assign()

Object.defineProperty()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,270評(píng)論 0 4
  • 參考基礎(chǔ)教程的整理,方便記憶 一、Object對(duì)象 (O大寫(xiě)) 所有其他對(duì)象都繼承自這個(gè)對(duì)象。Object本身也是...
    Viaphlyn閱讀 2,351評(píng)論 0 0
  • 每個(gè)人都會(huì)有一段異常艱難的時(shí)光,生活的窘迫,工作的失意,學(xué)業(yè)的壓力,愛(ài)的惶惶不可終日。挺過(guò)來(lái)的,人生就會(huì)豁然開(kāi)朗;...
    錦時(shí)夢(mèng)淺閱讀 542評(píng)論 0 1
  • 今天我在學(xué)校在讀書(shū)我們還玩我又交了新朋友嗯交了三個(gè)交了三個(gè)新朋友我和同學(xué)們玩得很開(kāi)心上午我們還跳五我們跳了兔子舞在...
    付晨璨閱讀 104評(píng)論 0 0