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

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

  

Js学习(7)标准库-object对象的更多相关文章

  1. 记阮一峰---JavaScript 标准参考教程之标准库-Object对象

    在看到阮大神的-标准库-Object对象时 有个 类型判断类型 方法可能以后会用到.特此记录一下 4.3:toString()的应用:判断数据类型 Object.prototype.toString方 ...

  2. Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)

    计算机的内存中存储的是二进制的序列. 我们能够直接将某个对象所相应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件里. 因为Python在创建对象时,要參考 ...

  3. go学习笔记-标准库

    标准库 名称 摘要 archive tar tar包实现了tar格式压缩文件的存取. zip zip包提供了zip档案文件的读写服务. bufio bufio 包实现了带缓存的I/O操作. built ...

  4. 一起学习Boost标准库--Boost.StringAlgorithms库

    概述 在未使用Boost库时,使用STL的std::string处理一些字符串时,总是不顺手,特别是当用了C#/Python等语言后trim/split总要封装一个方法来处理.如果没有形成自己的com ...

  5. 一起学习Boost标准库--Boost.texical_cast&format库

    今天接续介绍有关字符串表示相关的两个boost库: lexical_cast 将数值转换成字符串 format 字符串输出格式化 首先,介绍下lexical_cast ,闻其名,知其意.类似C中的at ...

  6. 从0开始的Python学习017Python标准库

    简介 Python标准库使随着Python附带安装的,它包含很多有用的模块.所以对一个Python开发者来说,熟悉Python标准库是十分重要的.通过这些库中的模块,可以解决你的大部分问题. sys模 ...

  7. Python --标准库 存储对象 (pickle包,cPickle包)

    在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象 ...

  8. Js学习(6) 标准库-Array对象

    Array是Js的原生对象,同时也是一个构造函数,可以用它生成新的数组 用不用new结果都一样 var arr = new Array(2); // 等同于 var arr = Array(2); 但 ...

  9. JS学习笔记-OO疑问之对象创建

    问一.引入工厂,解决反复代码 前面已经提到,JS中创建对象的方法,不难发现,主要的创建方法中,创建一个对象还算简单,假设创建多个类似的对象的话就会产生大量反复的代码. 解决:工厂模式方法(加入一个专门 ...

随机推荐

  1. Makefile中的ifeq 多条件使用

    Makefile中的ifeq 多条件使用 网上关于makefile中ifeq的介绍已经很多了,为什么我还要在写这篇文章,因为他们只说了if else两种条件的情况,并没有讲多于两种条件情况的使用. 多 ...

  2. 记录一个Q版openstack搭建教程地址

    https://blog.csdn.net/networken/article/details/80682437 感谢这篇文章的作者,文档很详细,记录一下,希望对大家有帮助.

  3. linux用ssh登录卡或者慢

    原因:有可能是客户端在登录服务器时,服务器会先根据客户端的IP根据DNS去查找主机名,如果客户端的DNS服务器出现问题或者主机名有问题,就会卡一段时间 解决办法: # vi /etc/ssh/sshd ...

  4. JAVA AES CBC 加密 解密

    AES 256 , KEY 的长度为 32字节(32*8=256bit). AES 128 , KEY 的长度为 16字节(16*8=128bit) CBC 模式需要IV, IV的值是固定写死,还是当 ...

  5. python 前后端分离 简单的数据库返回接口

    1.使用node http-server 起本地服务器  或者打开nginx 直接用nginx的默认页面也可以 (用下面的html文件替换nginx下html文件夹下的index.html) http ...

  6. [UE4]Scale Box:缩放容器

    一.Scale Box只能有一个子控件,再拖放一控件进去是不行的. 二.Scale Box缩放保持长宽比例 三. Scale Box.Strectching.Strectch:拉伸设置.  Scale ...

  7. Linux背背背(2)

    目录: 1.简单命令 2.目录切换命令 3.扩展命令 简单命令 ls 语法1:#ls [路径]            表示列出指定路径下的文件夹和文件的名字,如果路径没有指定则列出当前路径下的 语法2 ...

  8. Java虚拟机-JVM各种参数配置大全详细

      usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K ...

  9. tensorflow实战系列(四)基于TensorFlow构建AlexNet代码解析

    整体流程介绍: 我们从main函数走,在train函数中,首先new了一个network;然后初始化后开始训练,训练时设定设备和迭代的次数,训练完后关闭流程图. 下面看network这个类,这个类有许 ...

  10. String和StringBuilder、StringBuffer的区别

    String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的. String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情 ...