成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Object.preventExtensions()和Object.seal()怎么在JavaScript中使用

這篇文章將為大家詳細(xì)講解有關(guān)Object.preventExtensions()和Object.seal()怎么在JavaScript中使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在洪江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站制作,洪江網(wǎng)站建設(shè)費(fèi)用合理。

javascript是一種什么語(yǔ)言

javascript是一種動(dòng)態(tài)類型、弱類型的語(yǔ)言,基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性并廣泛用于客戶端網(wǎng)頁(yè)開(kāi)發(fā)的腳本語(yǔ)言,同時(shí)也是一種廣泛用于客戶端Web開(kāi)發(fā)的腳本語(yǔ)言。它主要用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能,現(xiàn)在JavaScript也可被用于網(wǎng)絡(luò)服務(wù)器,如Node.js。

一、基本介紹

MethodDescriptionParamDetail
Object.preventExtensions()讓一個(gè)對(duì)象變的不可擴(kuò)展,也就是永遠(yuǎn)不能再添加新的屬性Object詳細(xì)
Object.isExtensible()判斷一個(gè)對(duì)象是否是可擴(kuò)展Object詳細(xì)
Object.seal()讓一個(gè)對(duì)象密封,并返回被密封后的對(duì)象。密封對(duì)象是指那些不能添加新的屬性,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫(xiě)性,但可能可以修改已有屬性的值的對(duì)象。Object詳細(xì)
Object.isSealed()判斷一個(gè)對(duì)象是否是密封的Object詳細(xì)
Object.freeze()凍結(jié)一個(gè)對(duì)象并返回被凍結(jié)的對(duì)象。凍結(jié)對(duì)象是指那些不能添加新的屬性,不能修改已有屬性的值,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫(xiě)性的對(duì)象。也就是說(shuō),這個(gè)對(duì)象永遠(yuǎn)是不可變的。Object詳細(xì)
Object.isFrozen()判斷一個(gè)對(duì)象是否被凍結(jié)Object詳細(xì)

二、Object.preventExtensions()

Object.preventExtensions 只能阻止一個(gè)對(duì)象不能再添加新的自身屬性,仍然可以為該對(duì)象的原型添加屬性。

2.1 設(shè)置preventExtensions()

var jb51 = {
    name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: undefined
console.log(jb51.url);

2.2 嚴(yán)格模式下使用會(huì)報(bào)錯(cuò)

但是在嚴(yán)格模式下會(huì)報(bào)錯(cuò):

"use strict";
var jb51 = {
    name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: Uncaught TypeError: Can't add property url, object is not extensible
console.log(jb51.url);

2.3 不可以擴(kuò)展屬性,但可以更改已存在屬性值

var jb51 = {
    name: "zuojj"
};
Object.preventExtensions(jb51);
jb51.url = "https://www.jb51.net";
//Outputs: Uncaught TypeError: Can't add property url, object is not extensible
console.log(jb51.url);

2.4 不能阻止刪除(delete)現(xiàn)有屬性

var jb51 = {
    name: "jb51",
    url : "https://www.jb51.net"
};
Object.preventExtensions(jb51);
delete jb51.url;
//Outputs: {name: "jb51"}
console.log(jb51);

2.5 使用Object.defineProperty方法為一個(gè)不可擴(kuò)展的對(duì)象添加新屬性會(huì)拋出異常

var jb51 = {
    name: "jb51"
};
Object.preventExtensions(jb51);
jb51 = Object.defineProperty(jb51, "url", {value: "https://www.jb51.net" });
//Outputs: Uncaught TypeError: Cannot define property:url, object is not extensible.
console.log(jb51);

2.6 判斷一個(gè)對(duì)象是否可擴(kuò)展

var jb51 = {
    name: "jb51",
    url : "https://www.jb51.net"
};
Object.preventExtensions(jb51);
//Outputs: false
console.log(Object.isExtensible(jb51));

2.7 凍結(jié)對(duì)象和密封的對(duì)象都是不可擴(kuò)展對(duì)象

var jb51 = {
    name: "jb51"
},
sealed = Object.seal(jb51),
frozen = Object.freeze(jb51);
//Outputs: false false
console.log(Object.isExtensible(sealed), Object.isExtensible(frozen));

三、Object.seal()

3.1 不可以添加屬性,但可以修改屬性值

var jb51 = {
    name: "zuojj",
    url: "https://www.jb51.net"
};
Object.seal(jb51),
jb51.sex = "male";
jb51.name = "jb51";
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(jb51);

3.2 嚴(yán)格模式下使用會(huì)報(bào)錯(cuò)

3.3 delete不能刪除現(xiàn)有屬性

var jb51 = {
    name: "jb51",
    url: "https://www.jb51.net"
};
Object.seal(jb51),
delete jb51.name;
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(jb51);

3.4 Object.defineProperty不能擴(kuò)展對(duì)象屬性

var jb51 = {
    name: "jb51",
    url: "https://www.jb51.net"
};
Object.seal(jb51);
Object.defineProperty(jb51, "sex", {value: "male"})
//Outputs: Uncaught TypeError: Cannot define property:sex, object is not extensible.
console.log(jb51);

上面說(shuō)到密封對(duì)象不可擴(kuò)展,所以會(huì)報(bào)錯(cuò)

3.5 判斷對(duì)象是否為密封對(duì)象

// 新建的對(duì)象默認(rèn)不是密封的.
var empty = {};
//Outputs: false
console.log(Object.isSealed(empty));
// 空對(duì)象 && 不可擴(kuò)展 === 密封對(duì)象.
Object.preventExtensions(empty);
//Outputs: true
console.log(Object.isSealed(empty));
// 非空對(duì)象 && 不可擴(kuò)展對(duì)象不會(huì)變成密封對(duì)象,因?yàn)槊芊鈱?duì)象的所有自身屬性必須是不可配置的.
var hasProp = { fee: "fie foe fum" };
Object.preventExtensions(hasProp);
//Outputs: false
console.log(Object.isSealed(hasProp));
// 如果把這個(gè)屬性變的不可配置,則這個(gè)對(duì)象也就成了密封對(duì)象.
Object.defineProperty(hasProp, "fee", { configurable: false });
//Outputs: true
console.log(Object.isSealed(hasProp));
console.log("-------------");
// 一個(gè)密封對(duì)象也可以是一個(gè)凍結(jié)對(duì)象,但不是絕對(duì)的.
var s1 = {};
Object.seal(s1);
//Outputs: true
console.log(Object.isFrozen(s1));
var s2 = Object.seal({ p: 3 });
//Outputs: false
console.log(Object.isFrozen(s2)); // 屬性"p"可寫(xiě)

四、Object.freeze()

4.1 不能添加屬性,且不能修改屬性值

var obj = {
    name: "jb51",
    url: "https://www.jb51.net"
};
Object.freeze(obj);
obj.sex = "male";
obj.name = "zuojj";
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(obj);

4.2 嚴(yán)格模式下使用會(huì)報(bào)錯(cuò)

4.3 delete不能刪除現(xiàn)有屬性

var obj = {
    name: "jb51",
    url: "https://www.jb51.net"
};
Object.freeze(obj);
delete obj.name;
//Outputs: {name: "jb51", url: "https://www.jb51.net"}
console.log(obj);

4.4 判斷對(duì)象是否被凍結(jié)

var obj = {
    name: "jb51",
    url: "https://www.jb51.net"
};
Object.freeze(obj);
//Outputs: true
console.log(Object.isFrozen(obj));

五、兼容性

Object.preventExtensions(),Object.isExtensible(),
Object.seal(),Object.isSealed(),
Object.freeze(),Object.isFrozen()方法是ES5規(guī)范的一部分,IE8及以下低版本瀏覽器不支持。Oprea不支持。

關(guān)于Object.preventExtensions()和Object.seal()怎么在JavaScript中使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

文章名稱:Object.preventExtensions()和Object.seal()怎么在JavaScript中使用
文章起源:http://jinyejixie.com/article22/gdpjjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、外貿(mào)建站、全網(wǎng)營(yíng)銷推廣、App設(shè)計(jì)、響應(yīng)式網(wǎng)站、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
濮阳县| 渑池县| 延吉市| 彭州市| 枣强县| 阿瓦提县| 剑阁县| 汾阳市| 从江县| 廊坊市| 阳东县| 丰都县| 稻城县| 石屏县| 阿克| 上高县| 石门县| 左贡县| 收藏| 营口市| 华阴市| 贵港市| 辉县市| 安义县| 任丘市| 宾川县| 辰溪县| 丽水市| 邮箱| 项城市| 保亭| 博白县| 尼勒克县| 尖扎县| 偏关县| 揭西县| 台南县| 富阳市| 武平县| 色达县| 贡觉县|