Array Object 自身属性及方法大全

Object

console.log(Object.getOwnPropertyNames(Object))
/* ["length", "name", "prototype", "assign", "getOwnPropertyDescriptor", 
"getOwnPropertyDescriptors", "getOwnPropertyNames", "getOwnPropertySymbols", 
"is", "preventExtensions", "seal", "create", "defineProperties", 
"defineProperty", "freeze", "getPrototypeOf", "setPrototypeOf", 
"isExtensible", "isFrozen", "isSealed", "keys", "entries", 
"fromEntries", "values"]*/
Object.length ==1 //这是定值
Object.name == "object" //这是定值  typeof Object.name ==string
Object.prototype //对象的原型
Object.assign() //Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上。1-1 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。如果只有一个target(目标对象),Object.assign会直接返回该对象 
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptors()
Object.getOwnPropertyNames()//Object.getOwnPropertyNames返回的是对象所有自己的属性(没有原型对象上的),而Object.keys(obj)则返回的是所有可枚举属性,也就是属性下的enumerable: false
Object.getOwnPropertySymbols()
Object.is()// ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。Object.is就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。

// 不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
// +0 === -0 //true
// NaN === NaN // false
// Object.is(+0, -0) // false
// Object.is(NaN, NaN) // true


//ES5 可以通过下面的代码,部署Object.is。
Object.defineProperty(Object, 'is', {
  value: function(x, y) {
    if (x === y) {
      // 针对+0 不等于 -0的情况
      return x !== 0 || 1 / x === 1 / y;
    }
    // 针对NaN的情况
    return x !== x && y !== y;
  },
  configurable: true,
  enumerable: false,
  writable: true
});

//防止扩展,禁止为对象添加属性和方法,但已存在的属性和方法是可以被修改和删除的。不可增加, 可修改 可删除

//密封,防止扩展,但禁止删除对象已存在的属性和方法。不可增加, 可修改 不可删除

//冻结,禁止修改对象已存在的属性和方法,所有字段都是只读的。不可增加, 不可修改 不可删除
Object.preventExtensions()//防止扩展
Object.isExtensible()//检测对象是否是可扩展

Object.seal()//密封对象
Object.isSealed()//检测对象是否是密封

Object.freeze()//冻结对象
Object.isFrozen()//检测对象是否是冻结

Object.create()
Object.defineProperties()
Object.defineProperty()
Object.setPrototypeOf()//Object.setPrototypeOf(),为现有对象设置原型,返回一个新对象
//接收两个参数:第一个是现有对象,第二是原型对象   new 命令通过构造函数新建对象实例的过程,其本质是将实例的原型,指向了构造函数的prototype属性,然后在实例上执行构造函数。

Object.keys()
Object.entries()//俗点就是 Object.entries() 可以把一个对象的键值以数组的形式遍历出来,结果和 for...in 一致,但不会遍历原型属性
Object.fromEntries()///Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。

/*Object.fromEntries([
  ['foo', 'bar'],
  ['baz', 42]
])*/
// { foo: "bar", baz: 42 }
//该方法的主要目的,是将键值对的数据结构还原为对象,因此特别适合将 Map 结构转为对象。
/*const entries = new Map([
  ['foo', 'bar'],
  ['baz', 42]
]);
Object.fromEntries(entries)
// { foo: "bar", baz: 42 }*/
Object.values()

Array

/ console.log(Array.prototype)
/* ["length", "constructor", "concat", "copyWithin", "fill", "find",
 "findIndex", "lastIndexOf", "pop", "push", "reverse", "shift", 
 "unshift", "slice", "sort", "splice", "includes", "indexOf", "join",
  "keys", "entries", "values", "forEach", "filter", "flat", "flatMap", 
  "map", "every", "some", "reduce", "reduceRight", 
  "toLocaleString", "toString"]*/
let array=new Array();  //其余 看我的 博客 js篇
array.copyWithin(target, start, end) //IE12+//target	必需。复制到指定目标索引位置。start	可选。元素复制的起始位置。end	可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
array.fill(value, start, end)//IE12+//value	必需。填充的值。start	可选。开始填充位置。end	可选。停止填充位置 (默认为 array.length)
array.flat()//数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该方法返回一个新数组,对原数据没有影响。[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]
//[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值