溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript的內(nèi)置對象怎么用

發(fā)布時間:2022-03-02 10:25:48 來源:億速云 閱讀:116 作者:iii 欄目:web開發(fā)

這篇“JavaScript的內(nèi)置對象怎么用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JavaScript的內(nèi)置對象怎么用”文章吧。

1 、對象的基礎

1.1 類型

JavaScript有六種主要語言類型:

string , number , boolean ,undefined , null , object

基本類型:string,number,boolean,undefined,null;基本類型本身不是對象。

null

但是 null有時會被當成對象,typeof null 會返回object,實際上null是基本類型。原因是不同對象在底層都是表示為二進制,在JavaScript中二進制前三位都為0會被判斷為object類型,null表示全 0,所以typeof時會返回object。

特殊對象子類型

數(shù)組

數(shù)組也是對象的一種類型,具備一些額外的行為。數(shù)組的組織方式比一般的對象要復雜。

函數(shù)

函數(shù)本質(zhì)上和普通函數(shù)一樣,只是可以調(diào)用,所以可以操作對象一樣操作函數(shù)。

1.2 內(nèi)置對象

String

Number

Date

Boolean

Object

Function

Array

1.3 內(nèi)容

.a 稱之為屬性訪問,[‘a’]稱之為操作符訪問。

//對象中的屬性名始終是字符串

myobj={}

myobj[myobj]='bar'//賦值

myobj['[object object]'] //'bar'

1.4 可計算屬性名

es6 增加可計算屬性名,可以在文字形式中使用 [] 包裹一個表達式來當作屬性名

var perfix = 'foo'

var myobj={

    [perfix + 'bar'] :'hello'

}

myobj['foobar']//hello

1.5 屬性描述符

es5開始,所有屬性具備了屬性描述符,比如可以直接判斷屬性是否可讀可寫等。

/*

 * 重要函數(shù):

 * Object.getOwnPropertyDescriptor() //獲取屬性描述符

 * Object.defineProperty() //設置屬性描述符

 */

 writeble(可讀性)

 configurable(可配置性)

 enumerable (可枚舉性)

1.6遍歷

for in

for in可用來遍歷對象的可枚舉屬性列表(包括[[Prototype]]鏈),需要手動獲取屬性值??梢员闅v數(shù)組及普通的對象

for of

es6新增,可以用來遍歷數(shù)組的屬性值,for of循環(huán)首先會向被訪問對象請求一個迭代器對象,然后通過調(diào)用迭代器對象的next()方法來遍歷所有的返回值。

數(shù)組有內(nèi)置的@@iterator,

for of 如何工作?

var arr = [1, 2, 3]

var it = arr[Symbol.iterator]()//迭代器對象

console.log(it.next());//{value: 1, done: false}

console.log(it.next());//{value: 2, done: false}

console.log(it.next());//{value: 3, done: false}

console.log(it.next());//{value: undefined, done: true}

/*

 * 用es6 的Symbol.iterator 來獲取對象的迭代器內(nèi)部屬性。

 * @@iterator本身并不是一個迭代器對象,而是一個返回迭代器對象的函數(shù)。

 */

對象如何內(nèi)置@@iterator,遍歷屬性的值?

因為對象沒有內(nèi)置一個@@iterator,無法自動完成for…of遍歷。但是,可以給你任何想遍歷的對象定義@@iterator,舉例來說:

  var obj={

      a:1,b:2

  }

   Object.defineProperty(obj, Symbol.iterator, {

        enumerable: false,

        writable: false,

        configurable: true,

        value: function () {

            var self = this

            var idx = 0

            var ks = Object.keys(self)

            return {

                next: function () {

                    return {

                        value: self[ks[idx++]],

                        done: (idx > ks.length)

                    }

                }

            }

        }

    })

    //手動遍歷

    var it = obj[Symbol.iterator]()//迭代器對象

    console.log(it.next());//{value: 1, done: false}

    console.log(it.next());//{value: 2, done: false}

    console.log(it.next());//{value: undefined, done: true}

   //for of 遍歷

    for (const v of obj) {

        console.log(v);

    }

    //2

    //3

其他數(shù)組遍歷函數(shù)

 /*

 forEach:會遍歷所有并忽略返回值

 some:會一直運行到回調(diào)函數(shù)返回 true(或者"真"值)

 every:會一直運行到回調(diào)函數(shù)返回 false(或者"假"值)

 map:

 filter:返回滿足條件的值

 reduce:

 some和every 和for的break語句類似,會提前終止遍歷

 */

以上就是關(guān)于“JavaScript的內(nèi)置對象怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI