• Js学习(7)标准库-object对象


    Js原生提供Object对象,O大写,所有的其他对象都继承自Object对象,都是Object的实例

    Object对象的原生方法分为两类:

    本身的方法:直接定义在Object对象的方法

    实例方法:定义在Object原型对象Object.prototype上的方法,可以被Object实例直接使用

    凡是定义在Object.prototype对象上的属性和方法将被所有实例对象共享

    首先是Object作为函数的用法

    (1)工具函数:用来将任意值转为对象,这个方法常用于保证某个值一定是对象

    tips:如果参数为空(或undefined和null),返回一个空对象

             如果参数是原始类型的值,转换为对应的包装对象的实例

             如果参数是对象,不用转换

    用法如下:

    var obj = Object();
    // 等同于
    var obj = Object(undefined);
    var obj = Object(null);
    
    obj instanceof Object // true
    

      

    (2)构造函数:通过它来生成新对象

    两种形式

    var obj = new Object();
    var o1 = {a: 1};
    var o2 = new Object(o1);
    o1 === o2 // true
    可以说var obj={}是var obj=new Object的简便写法
    具体针对不同参数 规则和工具函数时一样

      

    接下来就是Object对象的方法

    静态方法:Object对象自身的方法

    Object.keys():参数是一个对象,返回一个数组,该数组的成员都是该对象自身的(非继承的)所有属性名

    Object.getOwnPropertyNames:与keys方法类似,但是也会返回不可枚举的属性

    var a = ['Hello', 'World'];
    
    Object.keys(a) // ["0", "1"]
    Object.getOwnPropertyNames(a) // ["0", "1", "length"]
    

    可以用这两个方法计算对象属性的个数

    Object.keys(obj).length;

    一般情况下,几乎总是使用Object.keys方法,遍历数组的属性

    其他静态方法

     

    (1)Object.prototype.valueOf()

    返回一个对象的值,默认情况下返回对象本身

    主要用途是,JS自动类型转换时会调用这个方法,可以自定义valueOf方法,得到想要的结果

    var obj = new Object();
    obj.valueOf = function () {
      return 2;
    };
    
    1 + obj // 3
    

    (2)Object.prototype.toString

    返回一个对象的字符串形式,默认情况下返回类型字符串

    这个是最原始的  返回的字符串说明对象的类型

    可以自己写 覆盖

    var obj = new Object();
    
    obj.toString = function () {
      return 'hello';
    };
    
    obj + ' ' + 'world' // "hello world"
    

    数组,字符串,函数,Date对象都分别部署了自定义的toString方法对此进行覆盖

    这个最原始的可以用来判断数据类型,返回的字符串是“【object  对应对象的类型】” 

    如数值  返回 【object Number】 

    (3)Object.prototype.toLoacleString()

    和toString的作用在于:留出一个接口,让不同的对象实现自己版本的toLocalString,用来返回针对某些地域的特定的值

    目前主要有三个对象自定义了这个方法

    Array  Number   Data

    (4)Object.prototype.hasOwnProperty()

    接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性

      

  • 相关阅读:
    Axel linux下多线程下载工具
    使用Scala编写Spark程序求基站下移动用户停留时长TopN
    编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]
    使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
    Eclipse上Hadoop插件中Run On Hadoop原理[转]
    apache官方中文hadoop说明文档地址
    如何在Windows下面运行hadoop的MapReduce程序
    通过web界面查看hadoop集群运行日志的地址
    linux命令-查看当前目录下所有文件的大小:“ll -h”
    BZOJ3979 : [WF2012]infiltration
  • 原文地址:https://www.cnblogs.com/wtblogwt/p/10053376.html
Copyright © 2020-2023  润新知