JavaScript---对象

JS将键值转为字符串,属性是无序的
例如:

var obj = {};
obj[1]=1;
//obj['1']=1;

var obj={};
obj[{x:1}] = 1;
//obj[{}] = 1;

属性原型链
delete不会影响原型链

function foo() {
}
foo.prototype.z=3;
obj = new foo();
obj.x=1;//动态添加
//obj.z = 3;//继承
obj.hasOwnProperty('z');//false
obj.z=5;
//foo.prototype.z=3;
obj.hasOwnProperty('z');//true

属性读写

var obj={x:1};
obj.x;//1
obj['x'];//1
obj.y;//undefined
obj.y.z = 2;//error--undefined不能再定义属性
obj.y=3;//可以

删除属性

delete Object.prototype;//false
delete p['x'];
delete p.x;

var 定义的变量不能被 delete,也不能删除function

属性检测

var cat = new Object;
cat.legs=4;
'legs' in cat;//true

Object.defineProperty(cat,'price',{
enumerable:false,value:10000});//默认false
cat.propertyIsEnumerable('price');//false
cat.hasOwnProperty('price');//true


if(cat.legs !== undefined)
if(cat.legs != undefined)// !==undefined,or,!==null
if(cat && cat.legs)// !==undefined,or,!==null

getter,setter

var man = {
age=null;
get age() {}
set age(){}
}
man.age = 100;//调用set

修改原型链上的属性的值

//obj上的x
Object.defineProperty(obj,x',{writable:true,configurable:true,value:100});
obj.x;//100
obj.x=500;//500

属性标签:

//获取方法
Object.getOwnPropertyDescriptor({pro:true},'pro');
//value,writable,enumerable,configurable都是true
//设置属性及其标签
var Person = {};
Object.defineProperty(person,'name',{
  configurable:false,
  writable:true,
  enumerable:true,
  value:"lxf"
});
//设置多个属性,用defineProperties,属性之间,隔开

prototype:实现原型链

class:标识类型
Object.prototype.toString;.call()
例如:1会返回Number–>转为对象

extensible:是否可扩张,默认true
Object.preventExtensions(obj);

configurable:
Object.seal(obj);//将configurable设位false
判断:isSealed

Object.freeze(obj):
所有标签都false

序列化

JSON.stringfy(obj);//undefined不被序列化,NaN,Infinity会被转为null
var obj JSON.parse('{"x":1}');//反序列化
序列化的自定义:
var obj = {
x:1,
y:2,
o:{
o1:1,
o2:2.
toJSON:finction() {
    return this.o1+this.o2;
}
}
};
JSON.stringfy(obj);
//{"x":1,"y":2,"o":3}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值