JS 物件属性:属性的特徵 DAY68

Object.defineProperty
定义物件属性,调整属性特徵(请牢记!!)

// 定义物件属性,调整属性特徵Object.defineProperty

那特徵有哪些呢??

值(value)可否写入(writable)可否被删除(configurable)可否被列举(enumerable)

改值

var family = {    a: 1,    b: 2,    c: 3,}console.log(family); // 1 2 3// Object.defineProperty(物件,属性,参数)           Object.defineProperty(family,'a',{    // 预设都为 true    value: 4,    writable : true,    configurable : true,    enumerable : true,})console.log(family); // 4 2 3

可否写入

var family = {    a: 1,    b: 2,    c: 3,}console.log(family); // 1 2 3Object.defineProperty(family,'a',{    writable : false, // 不可写入    configurable : true,    enumerable : true,})family.a = 10; // 静默错误 console.log(family); // 因不可写入 所以一样为 1 2 3

可否被删除

var family = {    a: 1,    b: 2,    c: 3,}console.log(family); // { a : 1 , b : 2 , c : 3}Object.defineProperty(family,'b',{    configurable : false, // 不可删除})delete family.a;console.log(family); // { b : 2 , c : 3}delete family.b;console.log(family); // { b : 2 , c : 3}

可否被列举

var family = {    a: 1,    b: 2,    c: 3,}Object.defineProperty(family,'c',{    enumerable : false, })for(var key in family){    console.log('列举'+key); // 列举 a 列举 b}

浅层保护
Object.defineProperty 只能做到浅层保护

var family = {    a: 1,    b: 2,    c: 3,}Object.defineProperty(family,'d',{    value: {},    writable : false, })family.d = 1; console.log(family); // {} , d 一样为空物件 // 但禁止写入只限制 d 此属性// 由于物件有传参考的特性 所以我们可以针对里面的值来做设定
var family = {    a: 1,    b: 2,    c: 3,}Object.defineProperty(family,'d',{    value: {},    writable : false, })family.d = 1; console.log(family); // {} , d 一样为空物件 // 但禁止写入只限制 d 此属性// 由于物件有传参考的特性 所以我们可以针对里面的值来做设定family.d.a = 10;console.log(family);  // d: { a : 10}  

一次定义大量属性

var family = {    a: 1,    b: 2,    c: 3,}Object.defineProperties(family,{    a:{        writable: false,    },    b:{        configurable: false,    },    c:{        enumerable: false,    }})

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章