Object 对象

    技术2026-02-10  20

    Object 对象

    1.概述

    Object对象本身的方法

    Object.print = function (o) { console.log(o) }; // 上面代码中,print方法就是直接定义在Object对象上。 Object的实例方法 Object.prototype.print = function () { console.log(this); }; var obj = new Object(); obj.print() // Object // obj对象的print方法实质上就是调用Object.prototype.print方法。

    2.Object()

    // 如果参数为空(或者为undefined和null),Object()返回一个空对象。 var obj = Object(); // 等同于 var obj = Object(undefined); var obj = Object(null); obj instanceof Object // true

    3.Object 构造函数

    // Object不仅可以当作工具函数使用,还可以当作构造函数使用,即前面可以使用new命令。 var obj = new Object(); var o1 = {a: 1}; var o2 = new Object(o1); o1 === o2 // true var obj = new Object(123); obj instanceof Number // true // Object(value)与new Object(value)两者的语义是不同的,Object(value)表示将value转成一个对象,new Object(value)则表示新生成一个对象,它的值是value。

    4.Object 的静态方法

    4.1 Object.keys(),Object.getOwnPropertyNames()

    // Object.keys方法和Object.getOwnPropertyNames方法都用来遍历对象的属性。 var obj = { p1: 123, p2: 456 }; Object.keys(obj) // ["p1", "p2"] var obj = { p1: 123, p2: 456 }; Object.getOwnPropertyNames(obj) // ["p1", "p2"] // Object.keys方法只返回可枚举的属性 // Object.getOwnPropertyNames方法还返回不可枚举的属性名Object.getOwnPropertyNames方法还返回不可枚举的属性名 var a = ['Hello', 'World']; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"] // 对象长度(个数) var obj = { p1: 123, p2: 456 }; Object.keys(obj).length // 2 Object.getOwnPropertyNames(obj).length // 2 // 一般情况下,几乎总是使用Object.keys方法,遍历对象的属性。

    4.2 其他方法

    1. 对象属性模型的相关方法
    Object.getOwnPropertyDescriptor():获取某个属性的描述对象。 Object.defineProperty():通过描述对象,定义某个属性。 Object.defineProperties():通过描述对象,定义多个属性。
    2.控制对象状态的方法
    Object.preventExtensions():防止对象扩展。 Object.isExtensible():判断对象是否可扩展。 Object.seal():禁止对象配置。 Object.isSealed():判断一个对象是否可配置。 Object.freeze():冻结一个对象。 Object.isFrozen():判断一个对象是否被冻结。
    3.原型链相关方法
    Object.create()// 该方法可以指定原型对象和属性,返回一个新的对象。 Object.getPrototypeOf()// 获取对象的Prototype对象。

    5. Object 的实例方法

    // Object实例对象的方法,主要有以下六个。 Object.prototype.valueOf()// 返回当前对象对应的值。 Object.prototype.toString()// 返回当前对象对应的字符串形式。 Object.prototype.toLocaleString()// 返回当前对象对应的本地字符串形式。 Object.prototype.hasOwnProperty()// 判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 Object.prototype.isPrototypeOf()// 判断当前对象是否为另一个对象的原型。 Object.prototype.propertyIsEnumerable()// 判断某个属性是否可枚举。

    5.1 Object.prototype.valueOf()

    var obj = new Object(); obj.valueOf() === obj // true 返回原始值 var obj = new Object(); obj.valueOf = function () { return 2; }; 1 + obj // 3

    5.2 Object.prototype.toString()

    var o1 = new Object(); o1.toString() // "[object Object]" var o2 = {a:1}; o2.toString() // "[object Object]" var obj = new Object(); obj.toString = function () { return 'hello'; }; obj + ' ' + 'world' // "hello world" // 数组、字符串、函数、Date 对象都分别部署了自定义的toString方法,覆盖了Object.prototype.toString方法。 [1, 2, 3].toString() // "1,2,3" '123'.toString() // "123" (function () { return 123; }).toString() // "function () { // return 123; // }" (new Date()).toString() // "Tue May 10 2016 09:11:31 GMT+0800 (CST)"

    5.3 toString() 的应用:判断数据类型

    // Object.prototype.toString方法返回对象的类型字符串,因此可以用来判断一个值的类型。 var obj = {}; toString() // "[object Object]" Object.prototype.toString.call(value) // 上面代码表示对value这个值调用Object.prototype.toString方法。 不同数据类型的Object.prototype.toString方法返回值如下。 数值:返回[object Number]。 字符串:返回[object String]。 布尔值:返回[object Boolean]。 undefined:返回[object Undefined]null:返回[object Null]。 数组:返回[object Array]。 arguments 对象:返回[object Arguments]。 函数:返回[object Function]。 Error 对象:返回[object Error]。 Date 对象:返回[object Date]。 RegExp 对象:返回[object RegExp]。 其他对象:返回[object Object]

    5.4 Object.prototype.toLocaleString()

    // Object.prototype.toLocaleString方法与toString的返回结果相同,也是返回一个值的字符串形式。 var obj = {}; obj.toString(obj) // "[object Object]" obj.toLocaleString(obj) // "[object Object]" var person = { toString: function () { return 'Henry Norman Bethune'; }, toLocaleString: function () { return '白求恩'; } }; person.toString() // Henry Norman Bethune person.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"

    5.5 Object.prototype.hasOwnProperty()

    // Object.prototype.hasOwnProperty方法接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性。 var obj = { p: 123 }; obj.hasOwnProperty('p') // true obj.hasOwnProperty('toString') // false
    Processed: 0.008, SQL: 9