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: 1toString():返回当前对象对应的字符串形式。//可重写(数组、字符串、函数、Date都重写了自己的方法)
对于原型已经重写了toString,可以使用Object.prototype.toString.call(obj)调用Object的toString()方法,返回结果为[object,String|Number|Array|etc]
toLocaleString():返回当前对象对应的本地字符串形式。hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。isPrototypeOf():判断当前对象是否为另一个对象的原型。//两个对象原型是否相等propertyIsEnumerable():判断某个属性是否可枚举。

浙公网安备 33010602011771号