js中object对象的操作
n = object对象
for(var p in n){
console.log(p);//  取得是key值
console.log(n[p]);//取得是value值
}
继之前js中数组的常⽤⽅法之后,Object的常⽤⽅法和属性也是很常⽤的。故,总结之。
⼀、属性
Object⾃带⼀个prototype的属性,即Object.prototype,Object.prototype本⾝也是⼀个对象,也会有⼀些属性和⽅法。如下:
1、属性
Object.prototype.writable:默认为false
umerable:默认为false
figurable:默认为false
structor:⽤于创建⼀个对象的原型。
2、常⽤⽅法
js原型和原型链的理解
Object.prototype.hasOwnProperty():返回⼀个布尔值,表⽰某个对象是否含有指定的属性,⽽且此属性⾮原型链继承。
Object.prototype.isPrototypeOf():返回⼀个布尔值,表⽰指定的对象是否在本对象的原型链中。
Object.prototype.propertyIsEnumerable():判断指定属性是否可枚举。
String():返回对象的字符串表⽰。
Object.prototype.watch():给对象的某个属性增加监听。
Object.prototype.unwatch():移除对象某个属性的监听。
Object.prototype.valueOf():返回指定对象的原始值。
⼆、⽅法
Object.assign(target, …sources):把任意多个的源对象⾃⾝的可枚举属性拷贝给⽬标对象,然后返回⽬标对象。
Object.defineProperties(obj, props):在⼀个对象上添加或修改⼀个或者多个⾃有属性,并返回该对象。
Object.defineProperty(obj, prop, descriptor):直接在⼀个对象上定义⼀个新属性,或者修改⼀个已经存在的属性,并返回这个对象。obj:需要定义属性的对象。prop:需定义或修改的属性的名字。descriptor:将被定义或修改的属性的描述符。
举例:
var obj = { foo: “bar”, baz: 42 };
console.ies(obj)); // [ [‘foo’, ‘bar’], [‘baz’, 42] ]
Object.freeze(obj):冻结⼀个对象,冻结指的是不能向这个对象添加新的属性,不能修改其已有属性的值,不能删除已有属性,以及不能修改该对象已有属性的可枚举性、可配置性、可写性。也就是说,这个对象永远是不可变的。该⽅法返回被冻结的对象。
举例:
// 类数组对象
var obj = { 0: “a”, 1: “b”, 2: “c”};
console.OwnPropertyNames(obj).sort()); // [“0”, “1”, “2”]
Object.is(value1, value2):判断两个值是否是同⼀个值。
Object.isExtensible(obj):判断⼀个对象是否是可扩展的(是否可以在它上⾯添加新的属性)。
Object.isFrozen(obj):判断⼀个对象是否被冻结(frozen)。
Object.isSealed(obj):判断⼀个对象是否是密封的(sealed)。密封对象是指那些不可扩展的,且所有⾃⾝属性都不可配置的(non-configurable)且属性不可删除的对象(其可以是可写的)。
Object.keys(obj):返回⼀个由给定对象的所有可枚举⾃⾝属性的属性名组成的数组,数组中属性名的排列顺序和使⽤for-in循环遍历该对象
时返回的顺序⼀致
举例:
var arr = [“a”, “b”, “c”];
alert(Object.keys(arr)); // 弹出”0,1,2”
// 类数组对象
var obj = { 0 : “a”, 1 : “b”, 2 : “c”};
alert(Object.keys(obj)); // 弹出”0,1,2”
Object.preventExtensions(obj):让⼀个对象变的不可扩展,也就是永远不能再添加新的属性。
Object.setPrototypeOf(obj, prototype):将⼀个指定的对象的原型设置为另⼀个对象或者null
Object.values(obj):返回⼀个包含指定对象所有的可枚举属性值的数组,数组中的值顺序和使⽤for…in循环遍历的顺序⼀样。举例:
var obj = { foo: “bar”, baz: 42 };
console.log(Object.values(obj)); // [‘bar’, 42]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。