自定義對(duì)象

1、自定義對(duì)象

1.1、什么是自定義對(duì)象

在Javascript中,除了js本身提供的自定義對(duì)象外(如Array、Date、Number等),用戶還可以自己創(chuàng)建對(duì)象,這種由用戶自己創(chuàng)建的對(duì)象就被稱為自定義對(duì)象。

1.2、自定義對(duì)象特性

1.2.1、“字典”結(jié)構(gòu):對(duì)象的屬性由鍵/值對(duì)的形式組成,屬性名是字符串,屬性值可以是任意類型。

<script type="text/javascript">
        var a = {
            a:1
        }
        console.log(a.a)
    </script>

1.2.2、原型繼承:Js的自定義對(duì)象可以繼承原型的屬性。

<script type="text/javascript">
        function fun(a){
            this.a = a;
        }
        //prototype:使得我們能夠向構(gòu)造函數(shù)添加方法和屬性
        fun.prototype.b = function(){
            console.log(this.a)
        }
        var func = new fun("a")
        func.b();
    </script>

1.2.3、動(dòng)態(tài)結(jié)構(gòu):可動(dòng)態(tài)的增添或刪除對(duì)象的屬性

<script type="text/javascript">
        function a() {};
        var _a = new a();
        //動(dòng)態(tài)添加
        _a.name = "_a";
        _a.id = 1;
        console.log(_a.name+"------"+_a.id)
        //動(dòng)態(tài)刪除
        delete _a.name;
        console.log(_a)
    </script>

1.2.4、引用類型:js中的對(duì)象為引用類型,即a為一個(gè)對(duì)象,b=a,改變b的話a也會(huì)被改變。我們也稱這種特性為淺拷貝,這里b=a只是引用了a的地址,所以當(dāng)我們改變b時(shí),會(huì)根據(jù)地址將a也改變。

<script type="text/javascript">
        var a = {
            name:1
        }
        b = a;
        b.name = 2
        console.log(a)
    </script>

2、創(chuàng)建自定義對(duì)象

Js中創(chuàng)建自定義對(duì)象,主要通過三種方式:
1、對(duì)象直接量:原型為Object.prototype(也被稱為字面量)。
2、構(gòu)造函數(shù):原型為構(gòu)造函數(shù)的prototype屬性。
3、Object.create():原型為傳入的第一個(gè)參數(shù),若第一個(gè)參數(shù)為null,以O(shè)bject.prototype為原型。

2.1、對(duì)象直接量

<script type="text/javascript">
        var a = {
            name:'a'
        }
    </script>

這種方法適合用在某個(gè)特定的作用域內(nèi)

2.2、構(gòu)造函數(shù)

<script type="text/javascript">
        function Fun(){
            
        }
        var func = new Fun();
        console.log(func)
    </script>

構(gòu)造函數(shù)的函數(shù)名用駝峰法(即首字母大寫)表示,將它與普通函數(shù)區(qū)分開來。

2.3、Object.create()

<script type="text/javascript">
        //創(chuàng)建一個(gè)原型為null的對(duì)象
        var func = Object.create(null,{
            a:{
                value:"1",
            }
        })
    </script>

create方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)接收創(chuàng)建對(duì)象的原型,可以為null,此時(shí)對(duì)象的原型為undefined;第二個(gè)參數(shù)接收一個(gè)屬性描述符。

3、序列化

序列化即是調(diào)用JSON方法,將對(duì)象轉(zhuǎn)化為字符串,也可以通過反序列化將字符串轉(zhuǎn)成對(duì)象。

3.1、JSON.stringify(object)

作用:把對(duì)象轉(zhuǎn)化成字符串。

<script type="text/javascript">
        var func = Object.create(null,{
            a:{
                //設(shè)置允許對(duì)對(duì)象進(jìn)行枚舉,即遍歷,如果不設(shè)置,則輸出內(nèi)容為空
                enumerable: true,
                value:"1"
            }
        })
        console.log(JSON.stringify(func))
    </script>

3.2、JSON.parse(jsonStr)

作用:將json字符串轉(zhuǎn)成json對(duì)象

<script type="text/javascript">
        var func = '{"a":1}'
        console.log(JSON.parse(func))
    </script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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