在开发中总结的js

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会自动改变。

猜你喜欢

转载自blog.csdn.net/zhanghuanhuan1/article/details/81409121