亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript 之 面向?qū)ο?[ Object類(lèi)型 ]

reclay / 3346人閱讀

摘要:類(lèi)型描述類(lèi)型對(duì)象是所有其他類(lèi)型對(duì)象的父級(jí)使用創(chuàng)建對(duì)象表示使用構(gòu)造函數(shù)方式創(chuàng)建一個(gè)空對(duì)象顯示可以根據(jù)一個(gè)給定值創(chuàng)建一個(gè)對(duì)應(yīng)類(lèi)型的對(duì)象創(chuàng)建一個(gè)類(lèi)型的對(duì)象顯示啊哈哈創(chuàng)建一個(gè)類(lèi)型的對(duì)象顯示啊哈哈屬性描述符表示對(duì)象的屬性或方法的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于描述對(duì)

Object類(lèi)型 描述

object類(lèi)型對(duì)象是所有其他類(lèi)型對(duì)象的父級(jí)

使用Object創(chuàng)建對(duì)象
/* 表示使用構(gòu)造函數(shù)方式創(chuàng)建一個(gè)空對(duì)象 */
var obj1 = new Object();
console.log( obj1 );// 顯示 {}


/* Object可以根據(jù)一個(gè)給定值創(chuàng)建一個(gè)對(duì)應(yīng)類(lèi)型的對(duì)象 */
var obj2 = new Object( 100 );// 創(chuàng)建一個(gè)number類(lèi)型的對(duì)象
console.log( obj2 );// 顯示 [Number: 100]
var obj3 = new Object( "啊哈哈" );// 創(chuàng)建一個(gè)string類(lèi)型的對(duì)象
console.log( obj3 );// 顯示 [String: "啊哈哈"]
屬性描述符

表示對(duì)象的屬性或方法的內(nèi)部數(shù)據(jù)結(jié)構(gòu)

用于描述對(duì)象的值,或控制值的行為

比如: 是否可修改 是否可刪除 是否可枚舉

屬性描述符的分類(lèi)

數(shù)據(jù)描述符

存取描述符

獲取屬性描述符

Object.getOwnPropertyDescriptor()方法

通過(guò)該方法可以獲取到指定屬性或方法的屬性描述符

該方法接收兩個(gè)參數(shù)

第一個(gè) - 需要查找屬性的目標(biāo)對(duì)象

第二個(gè) - 目標(biāo)對(duì)象中需要查找的屬性名稱(chēng)( string類(lèi)型 )

該方法會(huì)將查找的結(jié)果,以對(duì)象的方式返回

var obj = {
    ahh : "啊哈哈"
}
var ahh = Object.getOwnPropertyDescriptor( obj, "ahh" );
console.log( ahh );
/* 顯示 {
value: "啊哈哈", - 表示 屬性或方法對(duì)應(yīng)的值
writable: true, - 表示 是否可修改,值為boolean類(lèi)型,true表示可以,false表示不可以,默認(rèn)值為 false
enumerable: true, - 表示 是否可枚舉,值為boolean類(lèi)型,true表示可以,false表示不可以,默認(rèn)值為 false
configurable: true  - 表示 是否可刪除,值為boolean類(lèi)型,true表示可以,false表示不可以,默認(rèn)值為 false
} */
屬性描述符的value屬性

可以對(duì)指定對(duì)象添加新屬性或方法

可以對(duì)指定對(duì)象中已有的屬性或方法進(jìn)行修改

Object.defineProperty()方法

該方法接收三個(gè)參數(shù)

第一個(gè) - 表示指定的對(duì)象

第二個(gè) - 表示指定對(duì)象中的屬性名稱(chēng),字符串格式

修改就填已存在的

新增就直接寫(xiě)新名

第三個(gè) - 表示屬性描述符,必須是對(duì)象格式 { }

/* 定義一個(gè)對(duì)象 */
var obj = {
    ahh : "啊哈哈"
}
/* 修改屬性 */
console.log( obj.ahh );// 顯示 啊哈哈
/* 對(duì)已有屬性進(jìn)行修改 */
Object.defineProperty( obj, "ahh", {
    value : "哈哈啊"
} );
/* 顯示修改后的屬性 */
console.log( obj.ahh );// 顯示 哈哈啊

/* 添加屬性 */
console.log( obj );// 顯示 { ahh: "哈哈啊" }
/* 添加新屬性 */
Object.defineProperty( obj, "ooo", {
    value : "哦哦哦",
    /*
        設(shè)置是否可枚舉
         * 用于打印對(duì)象時(shí)可以正常顯示新增的屬性
         * 不設(shè)置可枚舉時(shí)將無(wú)法顯示新增屬性,只顯示原有屬性
          * 顯示 { ahh: "哈哈啊" }
     */
    enumerable : true
} );
/* 顯示新增屬性 */
console.log( obj );// 顯示 { ahh: "哈哈啊", ooo: "哦哦哦" }
/* 調(diào)用新屬性 */
console.log( obj.ooo );// 顯示 哦哦哦
/*
    注意:
     * 通過(guò)Object.defineProperty()方法新增的屬性
      * 該屬性 - 不可修改 不可刪除 不可枚舉
     * 通過(guò) 對(duì)象名.屬性名 = 屬性值 的方法新增的屬性
      * 該屬性 - 可以修改 可以刪除 可以枚舉
 */
屬性描述符的writable屬性

表示指定屬性或方法是否可修改

該屬性值為boolean值

true - 表示可修改

false - 表示不可修改

Object.defineProperty()方法

該方法接收三個(gè)參數(shù)

第一個(gè) - 表示指定的對(duì)象

第二個(gè) - 表示指定對(duì)象中的屬性名稱(chēng),字符串格式

第三個(gè) - 表示屬性描述符,必須是對(duì)象格式 { }

/* 定義一個(gè)對(duì)象 */
var obj = {
    ahh : "啊哈哈"
}
/* 修改已有屬性 */
Object.defineProperty( obj, "ahh", {
    value : "哈哈啊",
    writable : false // 不可修改
} );
console.log( obj.ahh );// 顯示 哈哈啊
/* 設(shè)置writable屬性后在修改屬性 - 不可修改 */
obj.ahh = "啊啊啊";
console.log( obj.ahh );// 顯示 哈哈啊
/* 設(shè)置writable屬性后在修改屬性 - 可修改 */
Object.defineProperty( obj, "ahh", {
    writable : true // 可修改
} );
obj.ahh = "啊啊啊";
console.log( obj.ahh );// 顯示 啊啊啊
屬性描述符的configurable屬性

表示指定屬性或方法是否可枚舉

該屬性值為boolean值

true - 表示可枚舉

false - 表示不可枚舉

Object.defineProperty()方法

該方法接收三個(gè)參數(shù)

第一個(gè) - 表示指定的對(duì)象

第二個(gè) - 表示指定對(duì)象中的屬性名稱(chēng),字符串格式

第三個(gè) - 表示屬性描述符,必須是對(duì)象格式 { }

/* 定義一個(gè)對(duì)象 */
var obj = {
    ahh : "啊哈哈"
}
Object.defineProperty( obj, "ahh", {
    enumerable : false// 不可枚舉
} );
console.log( obj.ahh );// 顯示 啊哈哈
/*
    * 只能遍歷對(duì)象中可被枚舉的屬性
      * for...in語(yǔ)句
      * keys()方法
    * 可以遍歷對(duì)象中可枚舉和不可枚舉的屬性
      * getOwnPropertyNames()方法
 */
/* for...in語(yǔ)句 */
for ( var i in obj ) {
    console.log( i );
}// 沒(méi)有顯示

/* keys()方法 */
var obj1 = Object.keys( obj );
console.log( obj1 );// 顯示 []空數(shù)組

/* getOwnPropertyNames()方法 */
var obj2 = Object.getOwnPropertyNames( obj );
console.log( obj2 );// 顯示 [ "ahh" ]
屬性描述符的configurable屬性

表示指定屬性或方法是否可刪除

該屬性值為boolean值

true - 表示可刪除

false - 表示不可刪除

Object.defineProperty()方法

該方法接收三個(gè)參數(shù)

第一個(gè) - 表示指定的對(duì)象

第二個(gè) - 表示指定對(duì)象中的屬性名稱(chēng),字符串格式

第三個(gè) - 表示屬性描述符,必須是對(duì)象格式 { }

/* 定義一個(gè)對(duì)象 */
var obj = {
    ahh : "啊哈哈"
}
/* 修改已有屬性 */
Object.defineProperty(obj, "ahh", {
    configurable : false // 不可刪除
});
/* 刪除ahh屬性值 */
delete obj.ahh;
console.log(obj.ahh);// 顯示 啊哈哈

Object.defineProperty(obj, "ahh", {
    configurable : true // 可刪除
});
/* 刪除ahh屬性值 */
delete obj.ahh;
/* 在調(diào)用已刪除的屬性會(huì)報(bào)錯(cuò) */
console.log(obj.ahh);// 顯示 TypeError: Cannot redefine property: ahh
屬性描述符的存取器
/* 定義一個(gè)對(duì)象 */
var obj = {
    ahh : "ahh"
}
/* 定義一個(gè)全局變量 */
var quanju;
Object.defineProperty(obj, "ahh", {
    // 獲取指定的屬性值
    get : function(){// 當(dāng)獲取或訪(fǎng)問(wèn)當(dāng)前屬性時(shí),會(huì)調(diào)用get方法
        /*
            類(lèi)似于數(shù)據(jù)描述符中的value
            * get方法在被調(diào)用時(shí),不能傳遞任何參數(shù)
            * get方法在被調(diào)用時(shí),允許傳遞this關(guān)鍵字
              * this - 表示當(dāng)前的目標(biāo)對(duì)象(不能調(diào)用對(duì)象的當(dāng)前目標(biāo)屬性)
          */
        return quanju;// 由于變量為初始化,調(diào)用時(shí)可能結(jié)果為 undefined
    },
    /*
        set方法用于定義當(dāng)前目標(biāo)屬性的修改作用
        * 該方法接收唯一的一個(gè)參數(shù) -> 作為當(dāng)前目標(biāo)屬性的新的值
        * 通過(guò)屬性修改操作指定的新的值 -> 作為形參對(duì)應(yīng)的實(shí)參
     */
    set : function(canshu){
        /*
            set方法在被調(diào)用時(shí),允許傳遞this關(guān)鍵字
              * this - 表示當(dāng)前的目標(biāo)對(duì)象(不能調(diào)用對(duì)象的當(dāng)前目標(biāo)屬性)
         */
        quanju = canshu;
    }
});
console.log(obj.ahh);// 顯示 undefined

obj.ahh = "啊啊啊";
console.log(obj.ahh);// 顯示 啊啊啊
禁止擴(kuò)展

表示不能添加新的屬性或方法

Object.preventExtensions()方法

表示禁止擴(kuò)展

Object.isExtensible()方法

表示用于判斷指定對(duì)象是否可擴(kuò)展

true - 表示可擴(kuò)展

false - 表示不可擴(kuò)展

/* 定義一個(gè)空對(duì)象 */
var obj = {};
/* 設(shè)置禁止擴(kuò)展 */
Object.preventExtensions( obj );
/* 添加新屬性 */
obj.ahh = "啊哈哈";
console.log( obj );// 顯示 {}空對(duì)象
/*
    使用Object.defineProperty()方法進(jìn)行新增屬性會(huì)報(bào)錯(cuò)
    * TypeError: Cannot define property:name, object is not extensible.
 */
Object.defineProperty(obj, "ahh", {
    value : "啊哈哈"
});
console.log( obj );// 顯示 Cannot define property ahh, object is not extensible

/* 判斷指定對(duì)象是否可擴(kuò)展 */
var panduan = Object.isExtensible( obj );
console.log( panduan );// 顯示 false
密封對(duì)象

表示不能添加新的屬性或方法,也不能對(duì)已有的屬性或方法進(jìn)行修改

Object.seal()方法

表示密封對(duì)象

Object.isSealed()方法

表示用于判斷指定對(duì)象是否密封

true - 表示密封

false - 表示沒(méi)密封

var obj = {
    ahh : "啊哈哈" // 表示可修改
};
console.log( Object.getOwnPropertyDescriptor( obj, "ahh" ) );

/*
    將該對(duì)象進(jìn)行密封
    1.不能為該對(duì)象新增屬性或方法
    2.不能修改該對(duì)象的屬性或方法的描述符
      * configurable
      * enumerable
  */
/* 密封對(duì)象 */
Object.seal( obj );
console.log( Object.getOwnPropertyDescriptor( obj, "ahh" ) );

/* 判斷指定對(duì)象是否密封 */
var panduan = Object.isSealed( obj );
console.log( panduan );// 顯示 true
凍結(jié)對(duì)象

表示禁止對(duì)指定對(duì)象的任何修改操作

Object.freeze()方法

表示凍結(jié)對(duì)象

Object.isFrozen()方法

表示用于判斷指定對(duì)象是否凍結(jié)

true - 表示凍結(jié)

false - 表示沒(méi)凍結(jié)

var obj = {
    ahh : "啊哈哈"
}
/* 凍結(jié)對(duì)象 */
Object.freeze( obj );
/*
    對(duì)已經(jīng)凍結(jié)的對(duì)象使用Object.defineProperty()方法進(jìn)行操作
     * 會(huì)報(bào)錯(cuò)
     * TypeError: Cannot define property age, object is not extensible
 */
Object.defineProperty( obj, "age", {
    value : 18
} );
console.log( obj );//顯示 Cannot define property age, object is not extensible

/* 判斷指定對(duì)象是否密封 */
var panduan = Object.isFrozen( obj );
console.log( panduan );// 顯示 true

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/108172.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類(lèi),即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類(lèi)是相似對(duì)象的描述,稱(chēng)為類(lèi)的定義,是該類(lèi)對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類(lèi)的實(shí)體化形成的對(duì)象。一類(lèi)的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類(lèi)的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類(lèi),即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類(lèi)是相似對(duì)象的描述,稱(chēng)為類(lèi)的定義,是該類(lèi)對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類(lèi)的實(shí)體化形成的對(duì)象。一類(lèi)的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類(lèi)的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類(lèi),即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類(lèi)是相似對(duì)象的描述,稱(chēng)為類(lèi)的定義,是該類(lèi)對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類(lèi)的實(shí)體化形成的對(duì)象。一類(lèi)的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類(lèi)的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評(píng)論0 收藏0
  • javascript面向對(duì)象總結(jié)

    摘要:之面向?qū)ο罂偨Y(jié)前言在中是沒(méi)有類(lèi)的概念的,所以它的對(duì)象與基于類(lèi)的語(yǔ)言中的對(duì)象不同。一理解對(duì)象張三上面通過(guò)構(gòu)造函數(shù)創(chuàng)建了一個(gè)對(duì)象,并為它添加了三個(gè)屬性。 JavaScript之面向?qū)ο罂偨Y(jié) 前言:在ECMAScript中是沒(méi)有類(lèi)的概念的,所以它的對(duì)象與基于類(lèi)的語(yǔ)言中的對(duì)象不同。ECMA-262把對(duì)象總結(jié)為:無(wú)序?qū)傩缘募希鋵傩园局?、?duì)象或者函數(shù)。 一、理解對(duì)象 var person...

    taowen 評(píng)論0 收藏0
  • JavaScript面向對(duì)象原型

    摘要:一原型概括原型是什么對(duì)象包含數(shù)學(xué)方法的函數(shù),函數(shù)定義在屬性,初始值為一個(gè)空對(duì)象原型的屬性和方法不會(huì)影響函數(shù)自身的屬性和方法類(lèi)型的屬性所有函數(shù)都具有的屬性定義函數(shù)原型的默認(rèn)值是空對(duì)象函數(shù)包含構(gòu)造函數(shù)所有引用類(lèi)型其實(shí)都是構(gòu)造函數(shù)獲取原型通過(guò) JS(JavaScript)一.原型1.概括 原型是什么 Function對(duì)象包含數(shù)學(xué)方法的函數(shù),函數(shù)定義在protoype屬性,初始值為一個(gè)空對(duì)象原...

    Cristalven 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<