关于javascript的freeze的扩展性二
来源:互联网 发布:linux重启ntp服务命令 编辑:程序博客网 时间:2024/05/19 18:39
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var obj={
prop:function(){},
name:'liye'
};
obj.test='this is test';
delete obj.name;
var o=Object.freeze(obj);
console.log(obj===o);//true
/*
* 这里势必封闭更加严重的就是冻结
* 冻结之后的任何操作都会失败
* 默认对象是可以扩展的 一个不可扩展的也是一个冻结的对象
* 一个非空对象也是非冻结的
*/
// 注意、
//一个非扩展的 但是拥有一个可写但不可配置的属性 任然是非冻结的
var obj3={
x:99
};
//是当前对象变成不可扩展的
Object.preventExtensions(obj3);
//修改当前对象的属性
Object.defineProperty(obj3,'x',{writable:false});
//判断一个对象是否是冻结的
console.log(Object.isFrozen(obj3));//false
// 但是将这个变为不可配置 就是冻结的
Object.defineProperty(obj3,'x',{cofigurable:false});
console.log(Object.isFrozen(obj3));//????
// 若是一个不可扩展的对象 拥有访问器的属性 也是非冻结的
// 如果变成不可配置的 也是冻结的
var obj4={
get test(){
return 1;
}
};
Object.preventExtensions(obj4);
console.log(Object.isFrozen(obj4));//false
// 浅冻结
/*
这里是一个对象obj1包含一个对象test
obj冻结之后 并没有冻结test对象
*/
var obj1={
test:{}
};
Object.freeze(obj1);
obj1.test.x=22;
console.log(obj1.test.x);//输出22
// 深冻结
function deepFreeze(obj){
var prop,propKey;
Object.freeze(obj);
for(propKey in obj){
prop=obj[propKey];
//hasOwnProperty()检测一个对象是否含有特定的自身属性,和 in 运算符不同,
//该方法会忽略掉那些从原型链上继承到的属性。
if(!obj.hasOwnProperty(prop)||typeof prop==='object'){
continue;
}
deepFreeze(prop);
}
}
var obj2={
test:{}
};
deepFreeze(obj2);
obj2.test.x=44;
console.log(obj2.test.x);
</script>
</head>
<body>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
var obj={
prop:function(){},
name:'liye'
};
obj.test='this is test';
delete obj.name;
var o=Object.freeze(obj);
console.log(obj===o);//true
/*
* 这里势必封闭更加严重的就是冻结
* 冻结之后的任何操作都会失败
* 默认对象是可以扩展的 一个不可扩展的也是一个冻结的对象
* 一个非空对象也是非冻结的
*/
// 注意、
//一个非扩展的 但是拥有一个可写但不可配置的属性 任然是非冻结的
var obj3={
x:99
};
//是当前对象变成不可扩展的
Object.preventExtensions(obj3);
//修改当前对象的属性
Object.defineProperty(obj3,'x',{writable:false});
//判断一个对象是否是冻结的
console.log(Object.isFrozen(obj3));//false
// 但是将这个变为不可配置 就是冻结的
Object.defineProperty(obj3,'x',{cofigurable:false});
console.log(Object.isFrozen(obj3));//????
// 若是一个不可扩展的对象 拥有访问器的属性 也是非冻结的
// 如果变成不可配置的 也是冻结的
var obj4={
get test(){
return 1;
}
};
Object.preventExtensions(obj4);
console.log(Object.isFrozen(obj4));//false
// 浅冻结
/*
这里是一个对象obj1包含一个对象test
obj冻结之后 并没有冻结test对象
*/
var obj1={
test:{}
};
Object.freeze(obj1);
obj1.test.x=22;
console.log(obj1.test.x);//输出22
// 深冻结
function deepFreeze(obj){
var prop,propKey;
Object.freeze(obj);
for(propKey in obj){
prop=obj[propKey];
//hasOwnProperty()检测一个对象是否含有特定的自身属性,和 in 运算符不同,
//该方法会忽略掉那些从原型链上继承到的属性。
if(!obj.hasOwnProperty(prop)||typeof prop==='object'){
continue;
}
deepFreeze(prop);
}
}
var obj2={
test:{}
};
deepFreeze(obj2);
obj2.test.x=44;
console.log(obj2.test.x);
</script>
</head>
<body>
</body>
</html>
0 0
- 关于javascript的freeze的扩展性二
- 关于javascript的seal的扩展性一
- 关于软件Freeze的调查
- javascript 对象的可扩展性详解
- 关于可扩展性专题的研究
- VIDEO的freeze的原理
- 可扩展性的解法关于数组里面的数分类
- 关于前后端接口的可扩展性思考
- 关于Android模块化、低耦合、高扩展性的架构设计
- 应用程序的扩展性
- 对扩展性的思考
- JAVA类的扩展性
- NoSql的易扩展性
- HANA的可扩展性
- java的可扩展性
- 服务的扩展性
- 关于3Ds MAX在freeze transform后无法使用飘带插件springmagic的解决过程
- abld freeze做什么用的
- iPhone手机数据提取分析(一)
- oracle dba create view 失败 解决办法
- Postgresql 9 管理 手册(第二版)
- KairosDB 安装与入门
- C++编程笔记-特性
- 关于javascript的freeze的扩展性二
- 得到此时梦初醒
- SQL中的inner join和left join、right join有什么区别
- 控制Android应用权限的五种方法
- javascript闭包
- c++第五次作业
- Spring Security 4 整合Hibernate 实现持久化登录验证(带源码)
- 面向项目(二)—— visual studio 的使用
- 海康转码