JavaScript---对象

    xiaoxiao2021-03-25  100

    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}
    转载请注明原文地址: https://ju.6miu.com/read-6787.html

    最新回复(0)