javascript学习笔记——Object

javascript object 对象

所有其他对象都继承自object。(1,'1'这类的整数、字符串不是对象,但是在解析的时候会自动被封装成对应的原型对象实例)

b = new Object(a),如果a是一个对象,则a===b, 如果a不是对象,则b是a的包装对象(如 数字1的包装对象new Number(1))。

所有的构造函数(可以理解为类)都有一个prototype属性,指向一个原型对象。所有实例共享prototype上的属性和方法,这个要跟static区分开,JavaScript里也有static关键字,非静态方法中调用static申明的函数需要使用类名或this.constructor调用,但是在static 方法的内部可以使用this调用静态方法。静态方法可以被子类重写

静态方法:

Object.keys(),只返回可枚举的属性 //这俩方法可以计算对象属性个数

Object.getOwnPropertyNames() 返回可枚举和不可枚举的属性(不可枚举的属性如数组的length)

  • Object.getOwnPropertyDescriptor(obj,propertyKey):获取某个属性的attributes对象。输出的结果是对象属性的权限:
    configurable: true
    enumerable: true
    value: [123]
    writable: true
    __proto__: Object

     

  • Object.defineProperty(obj,propertyKey,propertyDescriptor):通过attributes对象,定义某个属性。
  • Object.defineProperties():通过attributes对象,定义多个属性。
  • Object.getOwnPropertyNames():返回直接定义在某个对象上面的全部属性的名称。//数组格式,Object.getOwnPropertyNames("abc") //["0", "1", "2", "length"]
  • Object.preventExtensions():防止对象扩展。//不能添加新属性
  • Object.isExtensible():判断对象是否可扩展。
  • Object.seal():禁止对象配置。 //不能添加新属性,所有已有属性变得不可配置,不能配置属性的权限,不可删除属性,可以修改属性的值,不能将属性的值从定义为方法
  • Object.isSealed():判断一个对象是否可配置。
  • Object.freeze():冻结一个对象。
  • Object.isFrozen():判断一个对象是否被冻结。
  • Object.create():该方法可以指定原型对象和属性,返回一个新的对象。
  • Object.getPrototypeOf():获取对象的Prototype对象。获取对象的原型(Object|Number|String)

Object对象的实例方法

  • valueOf():返回当前对象对应的值。//在运算的时候自动类型转换会调用,可重写
    var b = 1;
    var c = '1';
    console.log(b.valueOf(), c.valueOf());
    b.x = 11;//b其实是个数字,调用函数的时候被转换为了对象,调用完成后就被销毁了
    console.log("b.x:", b);

    //输出结果:
    1 "1"
    b.x: 1

     

  • toString():返回当前对象对应的字符串形式。//可重写(数组、字符串、函数、Date都重写了自己的方法)  

  对于原型已经重写了toString,可以使用Object.prototype.toString.call(obj)调用Object的toString()方法,返回结果为[object,String|Number|Array|etc]

  • toLocaleString():返回当前对象对应的本地字符串形式。
  • hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
  • isPrototypeOf():判断当前对象是否为另一个对象的原型。//两个对象原型是否相等
  • propertyIsEnumerable():判断某个属性是否可枚举。

 

posted @ 2019-04-23 17:54  微风&细雨  阅读(159)  评论(0编辑  收藏  举报