js Object 的冻结、密封、扩展的相同以及不同点

Object.freezed() 冻结  检查函数 Object.isFrozen(obj)

Object.seal() 密封   检查函数 Object.isSealed(obj)

Object.preventExtensions()扩展   检查函数 Object.isExtensible(obj)

共同点:

都不能添加新的属性
(有一个例外就是属性是对象的时候,可以在这个子属性上添加属性(因为对象是一个引用类型))

不同点:

Object.freezed() 和 Object.seal()  不能删除现有属性,不能修改已有属性的可枚举性、可配置性、可写性

Object.preventExtensions() 可以删除现有属性

Object.freezed() 不能修改已有属性的值

Object.seal() 和 Object.preventExtensions()可以修改已有属性的值

时间: 2024-10-10 17:11:58

js Object 的冻结、密封、扩展的相同以及不同点的相关文章

ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)

前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal Object.isSealed 冻结对象 Object.freeze Object.isFrozen 1. Object.preventExtensions 阻止对象扩展,让一个对象变的不可扩展,也就是永远不能再添加新的属性 ES3 是没有办法阻止对象扩展的,定义对象后可以给对象添加任意属性,如

JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题

前言:一年前,博主分享过一篇关于bootstrapTable组件冻结列的解决方案  JS组件系列——Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案 ,通过该篇,确实可以实现bootstrapTable的冻结列效果,并且可以兼容ie浏览器.这一年的时间,不断有园友以及群里面的朋友问过我关于固定高度之后,冻结列页面效果不能对齐的问题,奈何博主太忙,一直没有抽空将这个问题优化.最近项目里面也不断有人提过这个bug,这下子不能再推了,必须要直面“惨淡的bug”,于是昨天利用一天的

js Object.keys

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这

创建 JS Object 实例

创建 Object 实例的方式有两种.第一种是使用 new 操作符后跟 Object 构造函数,如下所示: var person = new Object(); person.name = "Jack"; person.age = 27; 第二种方式如下所示: var person = { name: "Jack", age: 27 } 使用第二种方式时,如果花括号内为空,则表示定义只包含默认属性和方法的对象.如下所示: var person = {}; perso

JS object factory and inherit sample

/* * Object factory */ function objectFactory(jsonObj){ function objectEntity(){ } if(typeof jsonObj == "object"){ for(var index in jsonObj){ objectEntity.prototype[index] = jsonObj[index]; } } return objectEntity; } var Person = objectFactory({

js Date 时间格式化的扩展

js Date 时间格式化的扩展: 1 Date.prototype.format = function (fmt) { 2 var o = { 3 "M+": this.getMonth() + 1, //月 4 "d+": this.getDate(), //日 5 "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //时 6 "H+": this.g

Convert JS object to JSON string

Modern browsers (IE8, FF3, Chrome etc.) have native JSON support built in (Same API as with JSON2). So as long you're not dealing with IE6/7 you can do it just as easily as that: var j={"name":"binchen"}; JSON.stringify(j); // '{"

[JS][Object][XScript]Printer Control

打印控件 ScriptX 1.先下载.cab档 并放置在网页数据夹 http://www.meadroid.com/scriptx/sxdownload.asp 2.输入以下程序 ■ 输入正确的版本及cab文件位址 原文:大专栏  [JS][Object][XScript]Printer Control 原文地址:https://www.cnblogs.com/chinatrump/p/11491048.html

从js的repeat方法谈js字符串与数组的扩展方法

js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { return (new Array(n + 1)).join(target); } //版本2:之所以要创建一个带length属性的对象 是因为要调用数据的原型方法,需要指定call的第一个参数为类数组对象 //类数组对象的必要条件是其length属性的值为非负数 function repeat(t