JS之Object常用函数

  • assign
    功能:把多个的对象自身可枚举属性拷贝给目标对象并返回目标对象。
    注意:
  • 实质是使用源对象的 getter和目标对象的setter
  • String和Symbol类型的属性都会被拷贝
  • 拷贝过程如果中断,已经拷贝成功的属性不会受到影响,还未拷贝的属性将不会再被拷贝。
  • 值为 null或 undefined的属性会被忽略
  • 属于浅拷贝类型,如果属性中包含对象,对象修改后,最终值也会跟着改变
  • 继承属性和不可枚举属性是不能拷贝的
  • 原始类型会被包装为 object
    栗子:
var copy = Object.assign({}, {a:1});
console.log(copy); // { a: 1 }
let src = {x:1,y:{a:1}}
let dist = Object.assign({},src);
src.y.a = 2//此时dist为:{ x: 1, y: { a: 2 } }
  • create
    功能:创建指定原型和属性的对象
    栗子:
function A() {
}
function B(){
}
B.prototype = Object.create(A.prototype);
b = new B();
b instanceof A//true
  • defineProperty | defineProperties
    功能:为对象定义属性
    属性描述:
    configurable:当且仅当该属性的 configurable 为 true 时,该属性描述符
    才能够被改变,也能够被删除。默认为 false
    enumerable:当且仅当该属性的 enumerable 为 true 时,该属性才能够出现在对象的枚举属性中。默认为 false
    value:初始值,默认为undefined
    writable:是否可写,默认为 false
    get: 返回实际值的函数,默认为undefined
    set: 设置并返回实际值的函数,默认为undefined
var obj={};
Object.defineProperties(obj,{
  p1:{
    value:1
  },
  p2:{
    value:2
  }
})
obj.p1//1
obj.p2//2
  • keys | getOwnPropertyNames
    功能:获取对象自身属性名数组
    区别:
    keys:自身的可枚举的属性
    getOwnPropertyNames:自身所有的属性
    注意:
    只是自身的属性,原型链上继承的属性可通过for...in获取
  • hasOwnProperty
    功能:判断某个对象是否含有指定的自身属性
  • is
    功能:判断两个对象是否是同一个值
    注意:
    1 ==运算符会对它两边的操作数做隐式的类型转换
    2 ===不会对操作数进行类型转换,但是它会把 -0和 +0这两个数值视为相同的,还会把两个NaN看成是不相等的
    3 只有满足下面任一条is才是true:
  • 两个值都是 undefined
  • 两个值都是 null
  • 两个值都是 true或者都是 false
  • 两个值是由相同个数的字符按照相同的顺序组成的字符串
  • 两个值指向同一个对象
  • 两个值都是数字并且
    • 都是正零 +0
    • 都是负零 -0
    • 都是 NaN
    • 都是除零和 NaN 外的其它同一个数字

你可能感兴趣的:(JS之Object常用函数)