直接定义在Object对象的方法
Object.print = function (o) { console.log(o); }
print方法就是直接定义在Object对象上数组
定义在Object原型对象Object.prototype上的方法,能够被Object实例直接使用
Object.prototype.print = function () { console.log(this); }; var obj = new Object(); obj.print() // Object
Object.prototype定义了一个print方法,而后生成一个Object的实例obj,obj直接继承了Object.prototype的属性和方法,因此能够直接使用obj.print调用print方法,实质上就是obj对象的print方法就是调用Object.prototype.print方法函数
凡是定义在Object.prototype对象上面的属性和方法,将被全部实例对象共享工具
Object自己是一个函数,能够看成工具方法使用,将任意值转为对象此方法经常使用于保证某个值必定是对象this
var obj = Object(); // 等同于下面两条语句 var obj = Object(undefined); var obj = Object(null); obj instanceof Object // true
var obj = Object(1); obj instanceof Object // true obj instanceof Number // true var obj = Object('foo'); obj instanceof Object // true obj instanceof String // true
var arr = []; var obj = Object(arr); // 返回原数组 obj === arr // true var fn = function() {}; var obj = Object(fn); // 返回原函数 obj === fn // true // 一个判断变量是否为对象的函数 function isObject(value) { return value === Object(value); } isObject([]) // true isObject(true) // false
经过var obj = new Object()
的写法生成新对象,与字面量的写法var obj = {}
是等价的
使用时,能够接受一个参数,若是该参数是一个对象,则直接返回这个对象,若是是一个原始类型的值,则返回该值对应的包装对象prototype
var o1 = {a: 1}; var o2 = new Object(o1); o1 === o1 // true var obj = new Object(123); obj instanceof Number // true
Object(value)
表示将value转成一个对象new Object(value)
表示生成一个对象,它的值是value用来遍历对象的属性
Object.keys
方法的参数是一个对象,返回一个数组,该数组的成员都是该对象自身的全部属性名,而不是继承的属性名code只返回可枚举的属性对象
var obj = { p1: 123, p2: 456, }; Object.keys(obj) // ["p1", "p2"]
用来遍历对象的属性接受一个对象做为参数,返回一个数组,包含了该对象自身的全部属性名继承
还返回不可枚举的属性名ip
var obj = { p1: 123, p2: 456, }; Object.keys(obj) // ["p1", "p2"] var a = ["hello", "hi"]; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"]
能够用上面两个方法提供计算对象属性个数的方法原型链
var obj = { p1: 1, p2: 2 }; Object.keys(obj).length // 2 Object.getOwnPropertyNames(obj).length // 2
对象属性模型的相关方法
Object.getOwnPropertyDescriptor()
:获取某个属性的描述对象
Object.defineProperty()
:经过描述对象,定义某个属性
Object.defineProperties()
:经过描述对象,定义多个属性
控制对象状态的方法
Object.preventExtensions()
:防止对象扩展
Object.isExtensible()
:判断对象是否可扩展
Object.seal()
:禁止对象配置
Object.isSealed()
:判断一个对象是否可配置
Object.freeze()
:冻结一个对象
Object.isFrozen()
:判断一个对象是否被冻结
原型链相关方法
Object.create()
:该方法能够指定原型对象和属性,返回一个新的对象
Object.getPrototypeOf()
:获取对象的Prototype对象
定义在Object.prototype对象,全部Object的实例对象都继承了这些方法
Object.prototype.valueOf()
:返回当前对象对应的值Object.prototype.toString()
:返回当前对象对应的字符串形式Object.prototype.toLocaleString()
:返回当前对象对应的本地字符串形式Object.prototype.hasOwnProperty()
:判断某个属性是否为当前对象自身的属性,仍是继承自原型对象的属性Object.prototype.isPrototypeOf()
:判断当前对象是否为另外一个对象的原型Object.prototype.propertyIsEnumerable()
:判断某个属性是否可枚举