等式判断
基于原型链的
js
Object.prototype.constructor === Object; //True
Object.__proto__ === Function.prototype; //True
Object.prototype.__proto__ === null; //True
null instanceof Object; //False
typeof null === "object"; //True
其他等式比较
js
{}==={};//false
NaN===NaN;//false
[]===[];//false
// ![] 空数组是true,所以![]是false
![]==false;//true
// 非严格比较时,[]会被转换为false
![]==[];//true
// 正则表达式也是对象,每次创建一个新的正则表达式,它的内存引用不同
/a/===/a/;//false
// new String('1')创建了一个包装对象,1是原始值
1===new String('1');//false
var arr=[NaN];
arr.indexOf(NaN);//-1
// NaN与任何值都不相等,包括它自身
Number.isNaN(NaN);//true
Number.isNaN(123);//false
Number.isNaN(undefined);//true
Number.isNaN(null);//false
Number.isNaN('abc');//true
输出
js
class Foo {
constructor(arr) {
this.arr = arr;
}
bar(n) {
return this.arr.slice(0, n);
}
}
var f=new Foo([0,1,2,3]);
f.bar(1);//[0]
f.bar(2).splice(1,1);//[1]
f.arr;//[0,1,2,3]
splice用法:
array.splice(start, deleteCount, item1, item2, ..., itemN)
start:必填参数。表示从哪个索引位置开始修改数组。可以是负数,表示从数组末尾开始计算位置。
deleteCount:可选参数。表示要删除的元素个数。如果 deleteCount 是 0,则不删除元素。如果没有指定此参数,或者它的值大于从 start 开始的剩余元素的数量,则删除从 start 开始的所有元素。
item1,item2,...,itemN:可选参数。要添加到数组中的元素,从 start 位置开始。如果不指定此参数,splice() 仅执行删除操作。