-
序列化 通过全局的JSON.stringify(obj);做序列化处理 注意: 1、当你对象中有属性的值是undefined的时候,这该属性是不会出现在序列化字符串的结果里 2、当你属性的值是NaN或者Infinity时,序列化的结果是null;当你的属性值是new Date(),序列化的结果是UTC的时间格式 后端返回来JSON数据时,采用JSON.parse来转化;合法的JSON的属性必须用双引号引起来 想要自定义序列可以改写toJSON方法查看全部
-
1、class:表示对象是哪一个类型 Object.prototype.toString()会把参数先变为对象 2、extensible 对象是否可以扩展,默认为true 3、通过Object.isExtensible(obj)判断是否可扩展; 通过Object.preventExtensions(obj)阻止增加新的属性,但是要加上Object.seal(obj)才算是真正的限制修改、删除,此时(configurable = false)。通过Object.isSealed(obj) //判断是否被隐藏。 4、通过Object.freeze是更进一步(writeable和configurable都为false) Object.isFrozen(obj) //判断对象当前是否被冻结 Object.freeze对与原型链上的没有影响。 Object.preventExtensions() 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。 Object.seal() 方法可以让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可能可以修改已有属性的值的对象。 Object.freeze() 方法可以冻结一个对象。冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。 注意:上述提到的方法只是针对某个对象的,比如说冻结一个对象时,并不会影响对象的原型链,如果想对原型链做类似处理的话,可以通过Object.prototypeof()的方法拿到对象的原型,一层层遍历,然后freeze查看全部
-
class 标签,获取类名称 slice(8,-1) 字符串,相当于去掉中括号[],例如 "[object Null]" ==> "Null"查看全部
-
属性标签查看全部
-
属性标签,在configurable:true,writable:false;时,可以通过Object.defineProperty()来修改writable的值从而重设value标签的值查看全部
-
属性标签查看全部
-
特别注意: 1、如果configurable是true那么即使writeable为false,但是也可以通过Object.definePorperties方法去修改 2、Object.defineProperties(),第一个参数要定义的对象,第二个参数复杂的对象,(属性名,属性值,属性标签) 3、getOwnPropertyDescriptor 获取指定对象自己的属性描述符。 自己的属性描述符是直接在对象上定义的描述符,而不是从对象的原型继承的描述符。查看全部
-
Object.defineProperties创建多个属性 Object.keys( obj )获取对象的可枚举属性 configurable为false情况下,只有将writable从true修改为false是允许的,其他一概不可查看全部
-
value(true/false):属性是否有值 writable(true/false):属性是否可以修改,是否可写 enumerable(true/false):属性是否可以遍历、枚举 configurable(true/false):属性是否可以再被修改;也表示可不可以通过delete方式删除掉该属性,true表示可以删除,false表示不可以删除 Object.defineProperty( obj , property, value )创建single属性[ value, writable, configurable, enumerable]默认为false Object.getOwnPropertyDescriptor( obj, property)查看对象的四个属性标签[ value, writable, configurable, enumerable]。如果property与obj名称不一样的话,则返回undefined. Object.keys( obj )获取对象的可枚举属性查看全部
-
get set方法也会与属性一样关联原型链,所以上面的obj.z=10不会在[[proto]]里面创建新的z属性,所以obj.z;//still 1。 如果想要使obj.z;值改变,采用Object.deineProperty 添加新的z属性,其默认writable=false configurable=false。查看全部
-
get/ set 方法,逗号分隔,get 读取,set 赋值。查看全部
-
左侧,不可枚举的 for in 时,不会出来 右侧,Obj.a=4 是可遍历的,将对象自己的属性和原型链上的属性都遍历出来了 遍历时用hasOwnProperty(key) 过滤原型链上的属性查看全部
-
自定义一个对象属性,让它的枚举标签是false Object.defineProperty(添加属性的对象,属性的名字,一个对象可以设置一些标签)默认的enumerable是false。。。用这种方法定义的属性标签都默认为是false查看全部
-
defineProperty() 设置对象属性 propertyIsEnumerable()判断属性是否可枚举; hasOwnProperty() 是否自有属性,而非来自原型链继承查看全部
-
var定义的全局变量和局部变量不能被删除 全局函数和函数内部局部作用域的函数也不可被删除 在eval里用var定义的函数可以被删掉查看全部
举报
0/150
提交
取消