文章目录
静态方法(本身的方法)
像 Object.say()//say就是对象静态方法(本身的方法)
原生Object对象的静态方法
Object.keys()
//遍历自身属性,只包括可枚举属性Object.getOwnPropertyNames()
//遍历自身属性包括不可枚举属性
(1)对象属性模型的相关方法
Object.getOwnPropertyDescriptor()
:获取某个属性(非继承属性)的描述对象。Object.defineProperty()
:通过描述对象,定义某个属性。Object.defineProperties()
:通过描述对象,定义多个属性。
(2)控制对象状态的方法
Object.preventExtensions()
:防止对象扩展(添加新的属性)。Object.isExtensible()
:判断对象是否可扩展。Object.seal()
:禁止对象配置(添加/删除属性) configurable -> false;但是不影响修改值(writable)Object.isSealed()
:判断一个对象是否可配置(是否使用了.seal方法)。Object.freeze()
:冻结一个对象(无法添加/删除/修改属性)。Object.isFrozen()
:判断一个对象是否被冻结。
可以通过原型绕过冻结状态
var obj = new Object();
Object.preventExtensions(obj);
var proto = Object.getPrototypeOf(obj);
proto.t = 'hello';
obj.t
// hello
对象的如果属性是一个对象,冻结状态只会冻结这个指向,指向不会变,但是指向的值可以变
var obj = {
foo: 1,
bar: ['a', 'b']
};
Object.freeze(obj);
obj.bar.push('c');
obj.bar // ["a", "b", "c"]
(3)原型链相关方法
Object.create()
:该方法可以指定原型对象和属性,返回一个新的对象。Object.getPrototypeOf()
:获取对象的Prototype
对象。
实例方法
在Object原型上定义的方法
Object.prototype.print = function () {
console.log(this);
};// print就是一个实例方法
原生的实例方法
Object.prototype.valueOf()
//返回值Object.prototype.toString()
//返回对象的类型字符串Object.prototype.toLocaleString()
// 与toString相同,用与返回针对某些地域的特定的值Object.prototype.hasOwnProperty()
//判断属性是自身属性还是继承属性Object.prototype.isPrototypeOf()
:判断当前对象是否为另一个对象的原型。Object.prototype.propertyIsEnumerable()
:判断某个属性是否可枚举。
目前,主要有三个对象自定义了toLocaleString
方法。
- Array.prototype.toLocaleString()
- Number.prototype.toLocaleString()
- Date.prototype.toLocaleString()
var date = new Date();
date.toString() // "Tue Jan 01 2018 12:01:33 GMT+0800 (CST)"
date.toLocaleString() // "1/01/2018, 12:01:33 PM"
PS:此文章为学习笔记,感谢指正错误
参考链接