1.前段时间修改一个city picker 插件的时候需要操作数据,在遍历二维数据的时候要用到for in 循环 在for in 循环中需要用到
obj.hasOwnProperty(prop)
用来判断某个对象是否含有指定的属性的 返回Boolean.
所有继承了Object 的对象都会继承到 hasOwnProperty
方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。
2.不忙的时间研究了一下伪数组,也有人叫类数组,上网查了一下,这个知识点在行业掀起了一场不小的风波,这个是阿里 14年的面试题
var fakeArray = {
"0": "first",
"1": "second",
"2": "third",
length: 3,
push:Array.prototype.push
};
这样子就成了一个可以使用push方法又具有对象特性的伪数组。
var fakeArray = {
"0": "first",
"1": "second",
"2": "third",
length: 3,
push:Array.prototype.push,
splice:Array.prototype.splice
};
还可以给里边添加方法,但是这样的话在控制台打印就变成了一个数组的样子。
var fakeArray = {
"0": "first",
"1": "second",
"2": "third",
name:'zhangsan',
age:'12',
length: 3,
push:Array.prototype.push,
splice:Array.prototype.splice
};
可以打印出数组,但是具有了方法和属性。
伪数组的关键点是length 属性,没有这个属性就不是伪数组。有了length属性,根据push的底层原理,在操作这个方法的时候,不会影响其他的 name age 属性,并且length会自动改变。