這篇文章將為大家詳細(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是一種動(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。
Method | Description | Param | Detail |
---|---|---|---|
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 只能阻止一個(gè)對(duì)象不能再添加新的自身屬性,仍然可以為該對(duì)象的原型添加屬性。
var jb51 = { name: "zuojj" }; Object.preventExtensions(jb51); jb51.url = "https://www.jb51.net"; //Outputs: undefined console.log(jb51.url);
但是在嚴(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);
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);
var jb51 = { name: "jb51", url : "https://www.jb51.net" }; Object.preventExtensions(jb51); delete jb51.url; //Outputs: {name: "jb51"} console.log(jb51);
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);
var jb51 = { name: "jb51", url : "https://www.jb51.net" }; Object.preventExtensions(jb51); //Outputs: false console.log(Object.isExtensible(jb51));
var jb51 = { name: "jb51" }, sealed = Object.seal(jb51), frozen = Object.freeze(jb51); //Outputs: false false console.log(Object.isExtensible(sealed), Object.isExtensible(frozen));
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);
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);
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ò)
// 新建的對(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ě)
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);
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);
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)
移動(dòng)網(wǎng)站建設(shè)知識(shí)