对象常用方法

更多见:lodash

1、获取对象的类型

function classof(o){
    if(o === null) return "NULL";
    if(o === undefined) return "Undefined";
    return Object.prototype.toString.call(o).slice(8,-1);
}
classof(
1); // "Number" classof(''); // "String" classof(false); // "Boolean" classof([1,2,3,4]); // "Array" classof({a:1}); // "Object" classof(function a (){}); // "Function" classof(new Date); // "Date" classof(null); // "NULL" classof(undefined); // "Undefined" classof(window); // "Window" classof(/./); // "RegExp"

 

2、序列化对象

     对象序列化:指将对象的状态转为字符串,也可以将字符串还原为对象。

     ECMAScript 5 提供了内置函数 JSON.stringify()  和 JSON.parse() 用来序列化和还原js对象。

      注意:

         1-     JSON 是JS语法的子集,不能表示JS里面的所有值。支持对象、数组、字符串、无穷大数字、true、false和null,并且他们可以序列化和还原

         2-    JSON.stringify()  只能序列化对象可枚举的自有属性。对于一个不能序列化的属性来说,在序列化之后输出的字符串中,会将这个属性省略掉。

         3-     NaN、 Infinity 、- Infinity 序列化的结果是null。

         4-     函数、RegExp、Error对象和undefined值  不能序列化和还原。

 3、对象方法----toString()方法等

        toString()方法 没有参数,他将返回一个表示调用这个方法的对象值的字符串。

var a = {a:1};
var s = [1,2,3,4];
var d = new Date;
var f = false;
var n = 1;

a.toString();  //  "[object Object]"
s.toString();  //  "1,2,3,4"
d.toString();  //  "Tue Jan 23 2018 17:56:34 GMT+0800 (中国标准时间)"
f.toString();  //  "false"
n.toString();  //  "1"

    时间类:

var t = new Date;

t.toString();  // "Tue Jan 23 2018 18:01:52 GMT+0800 (中国标准时间)"
t.toDateString();  // "Tue Jan 23 2018"
t.toLocaleString();  // "2018/1/23 下午6:01:52"
t.toLocaleDateString();  //  "2018/1/23"
t.toISOString();  // "2018-01-23T10:01:52.039Z"
t.toTimeString();  //  "18:01:52 GMT+0800 (中国标准时间)"
t.toGMTString();  //  "Tue, 23 Jan 2018 10:01:52 GMT"

//  获取日期
t.getDate();   // 23
//  获取星期几
t.getDay();   // 2
//  获取年份
t.getFullYear();  // 2018
//  获取小时
t.getHours();   // 18
//  获取分钟
t.getMinutes();  // 1
//  获取秒
t.getSeconds();  //52
//  获取时间戳毫秒数
t.getTime();  // 1516701712039
t.valueOf();  //  1516701712039

 4、Object.assign函数 :将来自一个或多个源对象中的值复制到一个目标对象

//  Object.assign函数,第一个参数为目标对象,后面依次为源对象  
// 
var first = {name : 'kong'};  
var last = {age : 18};  
var person = Object.assign(first, last);  
console.log(person);  //  {name : 'kong', age : 18},注意这里first因为是第一个参数会被当成目标对象,所以first自身属性也被更改为和person一样了,即first === person  

//
用于克隆对象 var clone = Object.assign({}, person);

5、Object.freeze函数:阻止修改现有属性的特性和值,并阻止添加新属性

var a = {name : 'kong', age : 18};  
Object.freeze(a);    //  此时不允许添加或修改a的任何属性  

6、Object.keys函数  :用于返回对象可枚举的属性和方法的名称  

var a = {name : 'kong', age : 18, func : function(){}};  
Object.keys(a);    //  ['name', 'age', 'func']  

7、其余不常用方法:

//Object.is函数  
//用于判断两个值是否相同  
Object.is(a, b);  
//返回true或false  
//注意,该函数与==运算符不同,不会强制转换任何类型,应该更加类似于===,但值得注意的是它会将+0和-0视作不同值  
  


//hasOwnProperty方法  
//确定某个对象是否具有带指定名称的属性,有的话返回true,否则false  
//注意,该方法不会检查对象原型链中的属性  
var s = new String('123');  
console.log(s.hasOwnProperty('split'));         //false  
console.log(String.prototype.hasOwnProperty('split'));      //true


//isPrototypeOf方法  
//确定一个对象是否存在于另一个对象的原型链中  
function a(){  
}  
var b = new a();  
console.log(a.prototype.isPrototypeOf(b));    //true  

  
//Object.defineProperty函数  
//将属性添加到对象,或修改现有属性的特性  
var a = {};  
Object.defineProperty(a, 'name', {  
    value : 'kong',  
    enumerable : true   //该属性是否可枚举  
})  
//与之对应的是Object.defineProperties函数,可添加多个属性  
Object.defineProperties(a, {  
    name : {  
        value : 'kong',  
        enumerable : true  
    },  
    job : {  
        value : 'student',  
        enumerable : true  
    }  
})  
原文地址:https://www.cnblogs.com/lina-xiao/p/8337023.html