/*
* 这是一张 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...