一些基础知识点(总结自 @ikoala 前端面试常考的手写代码不是背出来的)

176 阅读1分钟

1.类型判断:

typeof:

typeof null; // object

  • null的判定有误差: typeof null // 'objext';
  • 对引用类型以及子类型,例如函数(可调用对象)、数组(有序索引对象)等进行判定,除了函数(//'function')都会得到object;

instanceof:

  • 原理: 测试构造函数的prototype是否出现在检测对象的原型链上;
arr instanceof Array; // true
arr instanceof Object; // true
  • 缺陷: 由于arr数组相当于new Array()出的一个实例,所以
    arr._proto_ === Array.prototype;
    Array.prototype._proto_ === Object.prototype;

Object.prototype.toString()

Object.prototype.toString.call({}) //'[object Object]' Object.prototype.toString.call([]) //'[object Array]'

  • 本质: Object.prototype.toString()方法得到对象的内部属性[[Class]];

Array.isArray()

  • 判断传递参数是否为数组(不支持IE6~8)

isNaN()判断是否为NaN

2.数组、字符串、对象常用函数掌握

2.1数组部分

splice函数(改变原始数组)

  • 向数组指定位置添加元素的功能; Array.splice(begin,deleteCount,addItem1,addItem2...)
var b = arr.splice(1,2);
// a: [1,4,5];
// b: [2,3];

var c = arr.splice(1,2,777,888)
// a: [1,2,777,888,4,5]
// b: [2,3] 

sclice函数(不改变原数组,创建新数组)

  • sclice()方法将数组中一部分元素浅复制存入新的数组对象,并返回这个数组;
  • 语法 arr.sclice([start[,end]]);