最近在看JavaScript原型时经常会遇到Object的一些方法和属性,特地去查看了相关资料,并将使用方法整理下来供参考。
及时总结
在浏览器控制台输入Object.就会出现如下图所示的一些方法和属性,其中也包含ES6新加入的属性和方法,从中挑选一些常用的属性和方法介绍。
chrome浏览器下
1 . ** creat** 创建一个拥有指定原型和若干个指定属性的对象。
Object.create(proto, [ propertiesObject ])
proto 一个对象,作为新创建对象的原型。
propertiesObject 可选。该参数对象是一组属性与值,存放新创建对象的属性和值
var animal = {age:0};
var cat = Object.create(animal, {
name: {
value: 'tom', // cat的属性name的值
writable: true, //当且仅当writable 为 true 时,cat的name属性才能被赋值运算符改变,默认为 false
configurable: true, // 当且仅当该属性的 configurable 为 true 时,该属性描述符才能够被改变,也能够被删除,默认为 false
enumerable: true // 当且仅当该属性的 enumerable 为 true 时,该属性才能够出现在对象的枚举属性中,默认为 false
}
});
console.log(cat.name); // tom
console.log(cat.age); // 0
在创建cat对象时以animal作为原型,name是cat的一个属性
2 . defineProperty 直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。
Object.defineProperty(obj, prop, descriptor)
obj : 需要定义属性的对象。
prop : 需定义或修改的属性的名字。
descriptor : 将被定义或修改的属性的描述符。
var cat = {age:10};
console.log(cat.age); // 10
Object.defineProperty(cat, 'age', {
enumerable: false,
configurable: false,
writable: false,
value: 4
});
console.log(cat.age); // 4
可以看出将cat的age属性值由10修改为4
3 . defineProperties 在一个对象上添加或修改一个或者多个自有属性,并返回该对象。
var cat = {age: 10, name: 'tom'};
console.log(cat.age);
console.log(cat.name);
Object.defineProperties(cat, {
age: {
enumerable: false,
configurable: false,
writable: false,
value: 4
},
name: {
enumerable: false,
configurable: false,
writable: false,
value: 'jack'
}
});
console.log(cat.age);
console.log(cat.name);
4 . getPrototypeOf 返回指定对象的原型(也就是该对象内部属性[[Prototype]]的值)。
Object.getPrototypeOf(object)
*object : 返回该对象的原型。 *
var cat = {age: 10, name: 'tom'};
var obj = Object.create(cat);
console.log(Object.getPrototypeOf(obj)); // { age: 10, name: 'tom' }
5 . getOwnPropertyDescriptor 返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)
Object.getOwnPropertyDescriptor(obj, prop)
obj 在该对象上查看属性
prop 一个属性名称,该属性的属性描述符将被返回
var cat = {age: 10, name: 'tom'};
var result = Object.getOwnPropertyDescriptor(cat,'age');
console.log(result);
/* {
value: 10,
writable: true,
enumerable: true,
configurable: true
}
*/
6 . keys 方法会返回一个由给定对象的所有可枚举自身属性的属性名组成的数组
Object.keys(obj)
obj : 返回该对象的所有可枚举自身属性的属性名.
var cat = {age: 10, name: 'tom'};
var result = Object.keys(cat);
console.log(result); // [ 'age', 'name' ]
7 . preventExtensions 方法让一个对象变的不可扩展,也就是永远不能再添加新的自身属性。
Object.preventExtensions(obj)
obj : 将要变得不可扩展的对象
var cat = {age: 10, name: 'tom'};
Object.preventExtensions(cat);
cat.sex='female';
console.log(cat); // { age: 10, name: 'tom' }
8 . isExtensible 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。
Object.isExtensible(obj)
obj : 需要检测的对象
var person = {name: 'douqing'};
var cat = {age: 10, name: 'tom'};
Object.preventExtensions(cat);
cat.sex='female';
console.log(cat); // { age: 10, name: 'tom' }
console.log(Object.isExtensible(cat)); // false
console.log(Object.isExtensible(person)); // true
9 . assign 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。
Object.assign(target, ...sources)
target : 目标对象。
sources : 任意多个源对象。
var cat = {age: 10, name: 'tom'};
var result = Object.assign({}, cat);
console.log(result); // { age: 10, name: 'tom' }
10 . is 方法用来判断两个值是否是同一个值。
Object.is(value1, value2)
value1 需要比较的第一个值。
value2 需要比较的第二个值。
var cat = {age: 10, name: 'tom'};
var person = {name: 'douqing'};
console.log(Object.is(1, 1)); // true
console.log(Object.is(person, cat)); // false
上面只是一些Object中常用的属性方法,想要了解更多的可以点击这里






网友评论