JS基础4

Array()

var a = new Array(3); var b = [undefined, undefined, undefined]; a.length // 3 b.length // 3a[0] // undefined b[0] // undefined0 in a // false 0 in b // true

以上代码告诉我们,直接使用数组定义赋值是更好的方法,而不是用Array(),使用定义赋值的会在该空间内保留这个键位,但是这个值不会定义,仅仅是保留位置,而使用Array(),则连键位都不给留,也没有值。
Array静态方法 【JS基础4】Array.isArray()方法返回一个布尔值,是判断该参数是否为一个数组。
map()
map方法是把 数组中的每一个参数依次传入函数参数。并返回新的数组。但是原数组不变。
var arr=[1,2,3]; arr.map(fonction (n){ return n+1}); //[2,3,4] console.log(arr); //[1,2,3]

map方法接受一个函数作为参数。该函数调用时,map方法向它传入三个参数:当前成员、当前位置和数组本身
[1, 2, 3].map(function(elem, index, arr) { return elem * index; }); // [0, 2, 6]

如果数组有空位,map方法的回调函数在这个位置不会执行,会跳过数组的空位。
var f = function (n) { return 'a' }; [1, undefined, 2].map(f) // ["a", "a", "a"] [1, null, 2].map(f) // ["a", "a", "a"] [1, , 2].map(f) // ["a", , "a"]

上面代码中,map方法不会跳过undefined和null,但是会跳过空位。
forEach() forEach()方法与map()方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach()方法不返回值,只用来操作数据。这就是说,如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach()方法。
forEach()的用法与map()方法一致,参数是一个函数,该函数同样接受三个参数:当前值、当前位置、整个数组。
Booleam对象
Boolean(1) // true Boolean('false') // true Boolean([]) // true Boolean({}) // true Boolean(function () {}) // true Boolean(/foo/) // true

最后,对于一些特殊值,Boolean对象前面加不加new,会得到完全相反的结果,必须小心。
if (Boolean(false)) { console.log('true'); } // 无输出if (new Boolean(false)) { console.log('true'); } // trueif (Boolean(null)) { console.log('true'); } // 无输出if (new Boolean(null)) { console.log('true'); } // true

面向对象编程1 Javascript没有类的概念,它的全部的面向对象是由构造函数生成的,构造函数的用法如下:
var Vehicle=function(){ this.price=1000; return 1000; }; var v=new Vehicle(); console.log(v);

返回
Vehicle { price: 1000 }

构造函数为了与一般的函数区别开,一般第一个字母用大写来表示,构造函数的特点有两个,函数体内部使用了this关键字,代表了所要生成的对象实例。生成对象的时候,必须使用new命令。
使用new命令可以使得对象取得该构造函数中this所指向的值,比如以上代码中,我们用了new 指令来取得this的值(是一个名为Vehicle的对象跟着this中给该对象设定了属性名price以及它的值是1000)并赋值给v,而不是函数本身的返回值1000。

    推荐阅读