学习资料:点此链接》》》MDN
Instanceof
instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
var O = R.prototype;// 取 R 的显示原型
L = L.__proto__;// 取 L 的隐式原型
while (true) {
if (L === null)
return false;
if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true
return true;
L = L.__proto__;
}
}
Object.assign()
作用
Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
参数
- target:目标对象
- sources:源对象
用法
对象浅拷贝
obj1复制给obj2,这种方法要把obj2设置为{},不能const obj2 = ""; const obj1 = {a: 1}; const obj2 = {}; Object.assign( obj2, obj1)
Object.keys()
作用
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致
参数
- obj:要返回其枚举自身属性的对象
返回值
- 一个表示给定对象的所有可枚举属性的字符串数组。
Object.entries()
Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环也枚举原型链中的属性)。
参数
- obj可以返回其可枚举属性的键值对的对象。
返回值
- 给定对象自身可枚举属性的键值对数组。
Object.values()
Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
参数
- obj被返回可枚举属性值的对象。
返回值
- 一个包含对象自身的所有可枚举属性值的数组
Ojbect.values()的polyfill
if(!Obejct.values){
Object.values = function(){
if(obj !== Object(Obj){
throw new TypeError('Object.values called on a non-object');
})
var val=[],key;
for(key in obj){
if(Object.prototype.hasOwnProperty.call(obj,key)){
val.push(obj[key]);
}
}
}
return val;
}
Array.prototype.includes()
includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
参数:
- valueToFind:要查询的值
- fromIndex:可选参数,从什么位置索引,如果为负值,则按升序从 array.length + fromIndex 的索引开始搜 (即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。默认为 0。