牛骨文教育服务平台(让学习变的简单)

Object类型

1. 实例化对象

所有其他对象都继承Object。

创建object实例的方式有两种:

  • 第一个中是使用new操作符后跟Object构造函数

    var person = new Object()
    

    注意:O是大写

  • 第二种是使用对象字面量:

    var person = {
    name: "tg"
    };
    

访问对象属性使用的是点表示法,也可以用方括号表示法来访问。

var person = {
  name: "tg"
};
console.log(person.name);  // "tg"
console.log(person["name"]);  // "tg"

注意:如果对象属性名是不符合语法的或属性名是关键字或保留字,只能使用方括号表示法。例如:

var person = {
  "1a" : 1
};
person["1a"];   //  1
person.1a  // 会报错

2、给对象添加方法

我们可以像添加属性一样给对象添加方法:

var o = {};
o.test = function(){
 console.log(1);
}

o.test();  //1

3、Object对象的静态方法

3.1 Object.keys()、Object.getOwnPropertyNames()

Object.keys()方法和Object.getOwnPropertyNames()方法一般用来遍历对象的属性,它们的参数都是一个对象,返回一个数组,该数组的项都是对象自身的(不是继续原型的)的所有属性名。两者的区别在于,Object.keys()只返回可枚举的属性,Object.getOwnPropertyNames()方法还返回不可枚举的属性名。

var arr = ["a", "b"];
console.log(Object.keys(arr));  // ["0", "1"]
console.log(Object.getOwnPropertyNames(arr)); // ["0", "1", "length"]

数组的length属性是不可枚举的。

4、Object对象的实例方法

valueOf():返回当前对象对应的值,默认情况下返回对象本身。
toString():返回当前对象对应的字符串形式。  
toLocaleString():返回当前对象对应的本地字符串形式。  
hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 如果是自身的属性,返回true,否则返回false。
isPrototypeOf():判断当前对象是否为另一个对象的原型。如果是,返回true,否则返回false。
propertyIsEnumerable():判断某个属性是否可枚举。

(1)valueOf()

valueOf()方法返回当前对象对应的值,默认情况下返回对象本身。

var o = {
	name: "tg",
	age: 24
};
console.log(o == o.valueOf());  // true

(2)toString()

toString()返回当前对象对应的字符串形式。

var o = {
	name: "tg",
	age: 24
};
console.log(o.toString());  // "[object Object]"

(3)hasOwnProperty()

hasOwnProperty()判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。 如果是自身的属性,返回true,否则返回false。

var o = {
	name: "tg",
	age: 24
};
console.log(o.hasOwnProperty("name"));  // true
console.log(o.hasOwnProperty("toString")); // false

toString()方法是继承原型的,所以返回后false。

(4)isPrototypeOf()

isPrototypeOf()方法判断当前对象是否为另一个对象的原型。如果是,返回true,否则返回false。

function Test(){}

var t = new Test();

console.log(Test.prototype.isPrototypeOf(t)); // true