真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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ǎ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)營銷,成都外貿(mào)網(wǎng)站制作,洪江網(wǎng)站建設(shè)費(fèi)用合理。

javascript是一種什么語言

javascript是一種動(dòng)態(tài)類型、弱類型的語言,基于對(duì)象和事件驅(qū)動(dòng)并具有相對(duì)安全性并廣泛用于客戶端網(wǎng)頁開發(fā)的腳本語言,同時(shí)也是一種廣泛用于客戶端Web開發(fā)的腳本語言。它主要用來給HTML網(wǎng)頁添加動(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ì)象是指那些不能添加新的屬性,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫性,但可能可以修改已有屬性的值的對(duì)象。Object詳細(xì)
Object.isSealed()判斷一個(gè)對(duì)象是否是密封的Object詳細(xì)
Object.freeze()凍結(jié)一個(gè)對(duì)象并返回被凍結(jié)的對(duì)象。凍結(jié)對(duì)象是指那些不能添加新的屬性,不能修改已有屬性的值,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫性的對(duì)象。也就是說,這個(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);

上面說到密封對(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"可寫

四、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í)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


新聞名稱:Object.preventExtensions()和Object.seal()怎么在JavaScript中使用
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/gdpjjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部