js之oop <四>对象管理
对象扩展管理
Object.isExtensible() 检测对象是否可扩展(一般返回true)。
Object.preventExtensions() 防止对象扩展。
var p = {p1:"a",p1:"b"};
Object.isExtensible(p); //返回true
Object.preventExtensions(p); //防止对象扩展
Object.isExtensible(p); //返回false
对象可扩展情况下,则可以添加属性。若不可扩展,则不能添加属性。
var p = {p1:"a",p1:"b"};
p.p3 = "new_element";
p.p3; //输出new_element
Object.preventExtensions(p); //防止对象扩展
p.p4 = "new_extensible"; //添加属性失败
p.p4; //输出undefined
但防止扩展,对象原有属性的属性标签仍都是true。
var p = {p1:"a",p1:"b"};
Object.preventExtensions(p);
Object.getOwnPropertyDescriptor(p,"p1");
//返回 { value: 'b', writable: true, enumerable: true, configurable: true }
这意味着原有属性可被删除,修改。
var p = {p1:"a",p1:"b"};
Object.preventExtensions(p);
delete p.p1; //返回true 且p.p1输出undefined
***************************************************************************************************************
对象密封管理
Object.isSealed() 检测对象是否密封(一般返回false)。
Object.seal() 密封对象。
var o = { o1:1,o2:2 };
Object.seal(o); //密封对象
o.o3 = 3; //赋值不成功 o.o3返回undefined
o.o1 = 81; //o.o1返回81 修改成功
delete o.o1; //返回false 删除不成功
Object.getOwnPropertyDescriptor(o,"o1");
//返回{ value: 1,writable: true,enumerable: true,configurable: false }
对象设置seal后,对象除了禁止扩展,且对象所有属性的configurable都为false。
***************************************************************************************************************
对象冻结管理
Object.isFrozen() 检测对象是否冻结(一般返回false)。
Object.Freeze() 冻结对象。
var q = { q1:1,q2:2 };
Object.freeze(q); //冻结对象
q.q3 = 3; //赋值不成功 o.o3返回undefined
q.q2 = 100; //q.q2返回2 修改失败
delete q.q2; //返回false 删除不成功
Object.getOwnPropertyDescriptor(q,"q2");
//返回{ value: 2,writable: false,enumerable: true,configurable: false }
对象设置freeze后,对象除了被密封,且对象所有属性的writable属性都为false。
js之oop <四>对象管理的更多相关文章
- js之oop <五>对象序列化(js的JSON操作)
js对象序列化的过程,就是对象转换为JSON的过程.JSON.stringify() 将对象序列化成JSON.(接收对象,输出字符串) var obj = {x:2,y:3}; var str = J ...
- js之oop <二> 对象属性
js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b ...
- JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法
JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...
- 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索
原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...
- 【Vue】Vue学习(四)-状态管理中心Vuex的简单使用
一.vuex的简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.Vuex背后的基本思想,就是前面所说的单向数据流.图4就是Vuex实现单向数据流的示意图. Store ...
- 深入理解JS异步编程四(HTML5 Web Worker)
>Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker We ...
- Effective C++ ----以对象管理资源
以对象管理资源 通过对象的析构函数的自动调用来自动释放资源 第一部分:几种典型的以对象管理资源的例子 1. STL::auto_ptr 获取资源后立刻放入资源管理对象 std::auto_ptr< ...
- js中的json对象详细介绍
JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Ob ...
- JS函数的四种调用模式
函数在js中具有四种身份,分别为函数.方法.构造函数.apply或call调用 函数调用 函数调用模式中this指全局对象(window) var f1 = function() { alert ...
随机推荐
- Linq 动态查询排序
Linq的排序一般是这样写的: query.OrderBy(x => x.Tel).Skip().Take(); 实际使用中排序字段可能是通过字符类型的参数来设置的,于是想这样实现: query ...
- Json与类对象转换
Json在js,jquery中可以直接使用,比如下串: { "from":"en" ,"to":"zh" ," ...
- C++程序设计(二)
1. 类 class CRectangle { public: int w, h; void Init( int w_, int h_ ) { w = w_; h = h_; } int Area() ...
- LeetCode Palindrome Permutation
原题链接在这里:https://leetcode.com/problems/palindrome-permutation/ 题目: Given a string, determine if a per ...
- windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”。
1. 问题 windows7打印时,显示脱机,提示“服务器打印后台处理程序服务没有运行”. 2. 解决方法. 将下面的文字保存为bat文件执行,其中\\192.168.40.110\Lenovo M7 ...
- 修改easyui中datagrid表头和数据不能分开对齐的BUG。
easyui的datagrid中表头和列只能同时全部向左对齐,全部向右对齐或者居中对齐. 有时候有需求,数据向左或向右,表头居中对齐. 在不修改源码的情况下.下面的代码可以实现该功能. 把下面代码放在 ...
- LUA语言注意点归集
统计元素个数接口--只计算以整数为下标的 第一段连续元素的数目 #tab 和 table.getn() http://ju.outofmemory.cn/entry/29450 我们修改table: ...
- windows系统调用 利用事件对象实现进程通信
#include "iostream" #include "windows.h" #include "cstring" using name ...
- gradle手工搭建java项目搭建
1. 安装gradle. 下载http://services.gradle.org/distributions/gradle-1.9-all.zip,解压至/usr/local/目录下. 设置环境变量 ...
- 本地yum库制作及本地安装Docker
生产环境中,我们总是会遇到服务器无法连接外网的情况,这样,如果想安装某个应用,而这个应用依赖的其他类库又特别多,就很痛苦了.这个时候,就需要自己制作个本地的yum库,进行本地安装.本文将以Docker ...