Object对象

最后更新于:2022-04-01 23:53:28

                        ## 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
';