Javascript——Object类型

1,211 阅读2分钟

前言

在平时工作中,我们看到的引用类型大多数是Object类型的实例。


什么是Object类型?

如下所示:

    var o = new Object();

Object类型是一种数据类型,是所有它的实例的基础。通俗的讲,它就是一个对象,有很多基本的属性供使用它的实例使用,并且可以添加新的属性。

object的实例有哪些共有的属性呢?

  • 构造函数(constructor),它保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName),用于检测给定的属性在不在当前的实例中(不是原型中)。
  • isPrototypeOf,用于检测对象是否是当前对象的原型。
  • propertyIsEnumerable(propertyName),用于检测给定的属性是否能够使用for-in语句来枚举。
  • toLocaleString,返回对象的字符串表示。
  • toString,返回对象的字符串表示。
  • valueOf,返回对象的字符串、数值、布尔值。

如何创建Object类型?

  1. 使用new操作符与Object构造函数:
    var person1 = new Object();
    person1.name = '对象1';
    person1.age = 18

  1. 对象字面量表示法
    var person2 = {
        name: '对象2',
        age: 18
    };

  第一种方法使用new操作符和Object构造函数创建了Object引用类型的一个新实例,然后把该实例保存在了变量person1中。
  第二种方法则是用一种简写的方式,通常使用对象字面量表示法比较频繁,因为它会给人封装数据的感觉,同时它也是向函数传递大量可选参数的首选方式。

实际上:

    var person2 = {}; // 与new Object()相同

函数传参:

    function test(args) {
        var result = '';
        if (typeof args.name === 'string') {
            result += 'Name:' + args.name + '\n';
        }
        if (typeof args.age === 'number') {
            result += 'Age:' + args.age + '\n';
        }
        console.log(result);
    }
    
    test({
        name: '测试1',
        age: 18
    });
    
    test({
        name: '测试2'
    });

Object对象属性访问方式

    var o = {
        name: '测试',
        age: 18
    };
    console.log(o.name);
    console.log(o['name']);
    
    var key = 'name';
    console.log(o[key]);

访问对象的属性一般是用点表示法比较多,同时也可以使用方括号表示法来访问,记住方括号里面的属性名要以字符串放入就行。通常不是必须使用变量来访问的属性,一般推荐用点表示法来访问。


Object类型检测方法

    var o = new Object();
    console.log(o instanceof Object)

instanceof关键字,可以检测出该对象是否是Object类型。有人会问typeof不是也可以吗?是的,确实也可以检测出来,但是typeof nulltypeof [] 得到的也是object,所以是不建议这么使用的,因为它不够精准啊大兄弟。