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()
接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性
Js学习(7)标准库-object对象的更多相关文章
- 记阮一峰---JavaScript 标准参考教程之标准库-Object对象
在看到阮大神的-标准库-Object对象时 有个 类型判断类型 方法可能以后会用到.特此记录一下 4.3:toString()的应用:判断数据类型 Object.prototype.toString方 ...
- Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)
计算机的内存中存储的是二进制的序列. 我们能够直接将某个对象所相应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件里. 因为Python在创建对象时,要參考 ...
- go学习笔记-标准库
标准库 名称 摘要 archive tar tar包实现了tar格式压缩文件的存取. zip zip包提供了zip档案文件的读写服务. bufio bufio 包实现了带缓存的I/O操作. built ...
- 一起学习Boost标准库--Boost.StringAlgorithms库
概述 在未使用Boost库时,使用STL的std::string处理一些字符串时,总是不顺手,特别是当用了C#/Python等语言后trim/split总要封装一个方法来处理.如果没有形成自己的com ...
- 一起学习Boost标准库--Boost.texical_cast&format库
今天接续介绍有关字符串表示相关的两个boost库: lexical_cast 将数值转换成字符串 format 字符串输出格式化 首先,介绍下lexical_cast ,闻其名,知其意.类似C中的at ...
- 从0开始的Python学习017Python标准库
简介 Python标准库使随着Python附带安装的,它包含很多有用的模块.所以对一个Python开发者来说,熟悉Python标准库是十分重要的.通过这些库中的模块,可以解决你的大部分问题. sys模 ...
- Python --标准库 存储对象 (pickle包,cPickle包)
在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象 ...
- Js学习(6) 标准库-Array对象
Array是Js的原生对象,同时也是一个构造函数,可以用它生成新的数组 用不用new结果都一样 var arr = new Array(2); // 等同于 var arr = Array(2); 但 ...
- JS学习笔记-OO疑问之对象创建
问一.引入工厂,解决反复代码 前面已经提到,JS中创建对象的方法,不难发现,主要的创建方法中,创建一个对象还算简单,假设创建多个类似的对象的话就会产生大量反复的代码. 解决:工厂模式方法(加入一个专门 ...
随机推荐
- PythonStudy——逻辑运算符 Logical Operators
在Python中,None.任何数值类型中的0.空字符串“”.空元组().空列表[].空字典{}都被当作False,还有自定义类型,如果实现了 __ nonzero __ () 或 __ len __ ...
- 以Windows服务方式运行ASP.NET Core程序【转载】
我们对ASP.NET Core的使用已经进行了相当一段时间了,大多数时候,我们的Web程序都是发布到Linux主机上的,当然了,偶尔也有需求要发布到Windows主机上,这样问题就来了,难道直接以控制 ...
- sql 50题
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50717 Source Host : ...
- Docker之 默认桥接网络与自定义桥接网卡
docker引擎会默认创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和宿主机都放到同一个二层网络. 1. docker如何使用网桥 1.1 Linux虚拟网桥的特点 ...
- windows下缩短time_wait的时间
最近线上遇到windows机器访问其他机器的时候失败的情况.实际就是本地的端口不够用造成的. D:\>netsh interface ipv4 show dynamicportrange pro ...
- oracle数据库报错ora-01653表空间扩展失败解决方案
1)ora-01653错误截图: 可以看到有两张表的insert受到了影响,都是在USERS表空间里.用以下SQL查看表空间使用情况: "表空间大小(M)",(a.bytes &q ...
- JavaScript基础应用
1.实现字符串的反向输出 var s="abc" s.split('').reverse().join('') -----> "cab" 知识点: S ...
- Linux集群之keepalive+Nginx
集群从功能实现上分高可用和负载均衡: 高可用集群,即“HA"集群,也常称作“双机热备”. 当提供服务的机器宕机,备胎将接替继续提供服务: 实现高可用的开源软件有:heartbeat.keep ...
- solidworks建立三维模型里面的几何对象和工程图里面的元素的联系
本文是帮助里面的一个例子, 首先打开一个三维模型和对应的工程图,保持三维模型为当前激活窗口,在三维模型里面选中一个面或者一个边,然后运行下面的代码, 会将工程图里面的第一视图里面对应的投影元素的线型的 ...
- HTML翻转菜单练习
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...