zoukankan      html  css  js  c++  java
  • 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()

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

      

  • 相关阅读:
    使用Redis的理由
    从输入网址到显示网页的全过程分析
    Node.js初识
    GET和POST的数据传递到底有何区别?
    第四五六周学习进度
    首尾相接整数数组中最大子数组的和
    网页版四则运算
    团队介绍及项目简介
    整数数组中最大子数组的和
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/wtblogwt/p/10053376.html
Copyright © 2011-2022 走看看