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()

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

  

原文地址:https://www.cnblogs.com/wtblogwt/p/10053376.html