Object 对象

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 

你可能感兴趣的:(javascript,js)