Object 常见的属性和方法

仅仅创建 Object 实例并没什么用处,关键是要理解一个重要思想:在 ECMAScript 中,Object 类型是所有它的实例的基础(就像 JAVA 中的 java.lang.Object 对象一样)。

换句话说,Object 类型所具有的任何属性和方法,也同样存在于更具体的对象中。


  • obj.constructor:保存着用于创建当前对象的函数。
var car={
	color:"red",
	run:function(){alert("run")}
};
car.constructor;  // object
或
var num = new Number(123);
num.constructor;  // Number
  • hasOwnProperty(propertyName):检测给定的属性在当前对象实例(而非原型)中是否存在。
作为参数的属性名(propertyName)必须以字符串形式指定(如,o.hasOwnPropertyName("name");)。
var car={
	color:"red",
	run:function(){alert("run")}
};
car.hasOwnPorperty("color")    // true
car.hasOwnPorperty("logo")    // false
可以间接判断属性是否是继承来的(原型)
  • isPropertyOf(object):用于检查传入的对象是否是另一个对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
    // 作为参数的属性名 (propertyName) 必须以字符串形式指定。
  • in:判断某个属性是否在对象中。    // "run" in car
  • toLocalString():返回对象的字符串表示,并不做任何本地化自身的操作(Date 和 Number 类做了本地化定制),仅调用toString()方法并返回对应值。
var o = {a:1};
o.toLocaleString() // "[object Object]"
  • toString():返回对象对应的字符串表示。
var o1 = new Object();
o1.toString() // "[object Object]"

var o2 = {a:1};
o2.toString() // "[object Object]"

一般地,使用Object.prototype.toString()来获取对象的类属性,进行类型识别。
  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。
// 获取对象的原始值
var num = Number(123);
num.valueOf();  // 123