/*
* 这是一张 JavaScript 代码草稿纸。
*
* 输入一些 JavaScript,然后可点击右键或从“执行”菜单中选择:
* 1. 运行 对选中的文本求值(eval) (Ctrl+R);
* 2. 查看 对返回值使用对象查看器 (Ctrl+I);
* 3. 显示 在选中内容后面以注释的形式插入返回的结果。 (Ctrl+L)
*/
Object.getOwnPropertyDescriptor
var person = [];
Object.defineProperty(person,'name',{
writable:false,
enumerable:true,
configurable:false,
value:'Bob'
});
person.name;
/*
Bob
*/
person.name=1;
/*
1
*/
person.name;//因为writable 为false;这里是不可写的
/*
Bob
*/
delete person.name;//这的的configurable为Ffalse 无法删除
/*
false
*/
Object.defineProperty(person,'type',{
configurable:true,
writable:true,
enumerable:false,
value:"Object"
});
Object.keys(person);//获取对象上的键 Object.keys;
/*
name
*/
Object.defineProperties(person,{
title:{value:'world',enumerable:true},
corp:{value:'BBBB',enumerable:true},
salary:{value:5000,enumerable:true,writable:true}
});
Object.getOwnPropertyDescriptor(person,'salary');
/*
[object Object]
*/
Object.keys(person);
/*
name,title,corp,salary
*/
Object.defineProperties(person, {
title : {value : 'fe', enumerable : true},
corp : {value : 'BABA', enumerable : true},
salary : {value : 50000, enumerable : true, writable : true},
luck : {
get : function() {
return Math.random() > 0.5 ? 'good' : 'bad';
}
},
promote : {
set : function (level) {
this.salary *= 1 + level * 0.1;
}
}
});
person.salary;
//对象标签 proto class extensible
var toString = Object.prototype.toString;
toString.call(null);
/*
//[object Null]
*/
function getType(o){return toString.call(o).slice(8,-1);};
getType(null);
/*
Null
*/
getType(undefined);
/*
Undefined
*/
getType(1);
/*
Number
*/
getType(new Number(1));//这里是对象
/*
Number
*/
typeof new Number(1);
/*
object
*/
getType(true);
/*
Boolean
*/
getType(new Boolean(true));//这里依然是对象
/*
Boolean
*/
//extensible标签
var obj = {x:1,y:2};
Object.isExtensible(obj);//默认是可以扩展的
/*
true
*/
Object.preventExtensions(obj);//阻止扩展
/*
[object Object]
*/
Object.isExtensible(obj);//这里显示不可以扩展
/*
false
*/
obj.z = 1;
obj.z
/*
undefined add new property failed
*/
Object.getOwnPropertyDescriptor(obj,'x');//查看 x的属性 value:1,writable:true,enumerable:true,configable:true
/*
[object Object]
*/
Object.seal(obj);
Object.getOwnPropertyDescriptor(obj,'x');//将 x的configurable设置为false
Object.isSeal(obj);
Object.freeze(obj);
Object.getOwnPropertyDescriptor(obj,'x');//将x的 writable 和configurable都设置为false
Object.isFrozen(obj);
//序列化、其他对象方法
var obj = {x:1,y:true,z:[1,2,3],nullVal:null};
JSON.stringify(obj);//将对象转换为JSON字符串
/*
{"x":1,"y":true,"z":[1,2,3],"nullVal":null}
*/
obj = {val:undefined,a:NaN,b:Infinity,c:new Date()};
JSON.stringify(obj);
/*
{"a":null,"b":null,"c":"2017-03-22T07:38:52.318Z"}//默认会忽略到 值为undefined的;NaN/Infinity 都为null,时间会转换为 当前的时格式
*/
obj = JSON.parse('{"x":1}');//将json字符串转换为 对象
//序列化 自定义
var obj ={
x:1,
y:2,
z:{
z1:1,
z2:2,
toJSON:function(){
return this.z1 + this.z2;
}
}
};
JSON.stringify(obj);
/*
{"x":1,"y":2,"z":3}
*/
var obj = {x:1,y:2};
obj.toString();
obj.toString = function(){return this.x + this.y};
"Result" +obj;
/*
Result3 +obj;//转化为 数字一元加号 数字类型
*/
obj.valueOf = function(){return this.x + this.y +100;};
//+obj;
"Result" + obj;
/*
Result103
Js Object一部分操作
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- (1) propTypes库 (官网)http://www.css88.com/react/docs/typech...
- Interacting with Objective-C APIs(与OC-API的交互)### Initiali...
- configurable:默认为true,设置为false之后,不可删除属性,不能对属性的其他特性做修改 enum...