Object常用的几种方法

描述

JavaScript原生提供Object对象。JavaScript的所有其他对象都继承自Object对象,即那些对象都是Object的实例。Object对象的原生方法`分成两类:Object本身的方法与Object的实例方法`。

本身方法

Object,print = function(o){console.log(o)};

Object的实例方法

所谓示例方法苦事定义在Object原型对象Object.prototype上的方法。它可以被Object实例直接使用。

Object.protitype.print = function(){console.log(this);
};
var obj = new Object();
obj.print()//Object

Object构造函数为给定值创建一个对象包装器,如果给定值是null或者undefined,将会创建并返回一个空对象,否则,将返回一个与给定值对应类型的对象。

//表示创建一个空对象
var obj1 = new Object(null);
var obj2 = new Object(undefined);
//表示创建一个与给定值对应类型的对象
var obj3 = new Object(100);
console.log(obj3);//[Number:100]
等同于
var num = new Number(100);
console.log(num);//[Number:100]

当以非构造函数形式被调用时,Object等同于 new Object().

var obj4 = Object();//函数调用
var obj5 = new Object();//构造函数调用

如果Object方法的参数是一个对象,他总是返回该对象,即不用转换。

var arr = [];
var obj = Object(arr);//返回原数组
obj === arr//truevar value = {};
var obj = Object(value)//返回原对象
obj === value//truevar fn = function(){};
var obj = Object(fn);//返回原函数
obj === fn //true

利用这一点,可以写一个判断变量是否为对象的函数。

function isObject(value){return value === Object(value);
}
isObject([]) //true
isObject(true)//false

Object.keys(),Object.getOwnPropertyNames()

Object.keys方法和Object.getOwnPropertyNames方法都用来遍历对象的属性。

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

var obj = {p1: 123,p2: 456
};Object.keys(obj) // ["p1", "p2"]

Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。

var obj = {p1: 123,p2: 456
};Object.getOwnPropertyNames(obj) // ["p1", "p2"]

对于一般的对象来说,Object.keys()Object.getOwnPropertyNames()返回的结果是一样的。只有涉及不可枚举属性时,才会有不一样的结果。Object.keys方法只返回可枚举的属性(详见《对象属性的描述对象》一章),Object.getOwnPropertyNames方法还返回不可枚举的属性名。

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

上面代码中,数组的length属性是不可枚举的属性,所以只出现在Object.getOwnPropertyNames方法的返回结果中。

由于 JavaScript 没有提供计算对象属性个数的方法,所以可以用这两个方法代替。

var obj = {p1: 123,p2: 456
};Object.keys(obj).length // 2
Object.getOwnPropertyNames(obj).length // 2

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

Object常用的几种方法相关推荐

  1. JS实现深拷贝常用的几种方法

    JS实现深拷贝常用的几种方法 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  2. java打印数组常用的几种方法

    java打印数组常用的几种方法 1.使用 for 循环 最"朴实无华"的方法,却也是屡试不爽的方法,直接打印变量名不成,逐个遍历打印一定是可以的! int[] intArray = ...

  3. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  4. jQuery添加DOM节点常用的5种方法

    一.内部插入(前插入.后插入): <!DOCTYPE html> <html><head><meta charset="UTF-8"> ...

  5. PHP教程:WebService最常用的两种方法

    国内用PHP写WebService的真的很少,网上资料也没多少,公司的项目开发过程中,经历了不少这方面的东西,写出来以供大家参考(谢谢老农提供的WSDL和程序文件) 客户端 代码: 01.   02. ...

  6. 统计内表行数常用的三种方法

    以下是统计内表行数常用的三种方法, 如下:   1.LOOP AT it_itab.    g_lines2 = g_lines2 + 1.    ENDLOOP.    该方法是通过循环内部表自己累 ...

  7. java json的使用方法_JAVA编写JSON常用的三种方法

    JAVA编写JSON常用的三种方法 Szx • 2019 年 11 月 15 日 1.jsonlib需要引入的包也多,代码也相对多一些. 2.Gson:谷歌的 3.FastJson:阿里巴巴的,这几个 ...

  8. 破解XP系统密码的常用的几种方法

    破解系统密码的常用的几种方法 ---流血的蚊子(个人实验加整理) 以下几种方法都需要Dos环境或者winpe环境,所以需要自己制作启动盘(具体方法不多言) 1.  SAM文件.Windows xp目录 ...

  9. ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练)

    ML:模型训练/模型评估中常用的两种方法代码实现(留一法一次性切分训练和K折交叉验证训练) 目录 模型训练评估中常用的两种方法代码实现 T1.留一法一次性切分训练 T2.K折交叉验证训 模型训练评估中 ...

最新文章

  1. 2018半年总结:走过的路
  2. java登录注册原理_案例:登录注册实现
  3. [计算机网络 谢希仁] 第一章
  4. linux 查找某个库文件属于哪个rpm包
  5. Android UI控件----ExpandableListView的基本用法
  6. 使用可变对象作为Java Map的key,会带来潜在风险的一个例子
  7. CF1200D-White Lines【二维前缀和】
  8. Qt工作笔记-Qt5中中文编码方面的笔记
  9. VC与Matlab混合编程的快速实现(3-1)
  10. nodejs cluster_NodeJS 极简教程 lt;1gt; NodeJS 特点 amp; 使用场景
  11. SQL join中on与where区别
  12. 《机器学习实战》学习笔记第七章 —— AdaBoost元算法
  13. iis运行html提示500错误,IIS7出现HTTP错误500.22的解决办法
  14. centos7升级内核
  15. 计算机网络题库与答案西电,西电计算机网络期末试题.doc
  16. 【驱动详解】如何理解驱动程序
  17. Unicdoe【真正的完整码表】对照表(一)
  18. 掌阅科技让数字化阅读更便捷
  19. 计算机弹薛之谦的音乐,薛之谦最火的五首歌,除了《演员》,这三首歌却埋没3年无人知!...
  20. linux下读写ntfs硬盘吗,Linux环境下实现NTFS分区完全读写的方法

热门文章

  1. 64位应用程序的开发
  2. oracle erp库位设置,快麦ERP是如何实施仓库库位规划的?
  3. vim编辑器中cscope自动加载cscope.out文件的方法
  4. 《两日算法系列》之第五篇:SVM
  5. 下载亚马逊MWS接口sdk
  6. iStat Menus ——mac上显示网速的软件下载地址及注册码
  7. python自动爬取快看漫画并发布至头条号(没编程基础也可学会)
  8. springboot集成各类常用中间件(更详细信息请看博主其它文章)
  9. 连续数值变量的离散化、哑变量
  10. Linux网络优化加速一键脚本