JS基础4

Array()

var a = new Array(3);
var b = [undefined, undefined, undefined];

a.length // 3
b.length // 3

a[0] // undefined
b[0] // undefined

0 in a // false
0 in b // true

以上代码告诉我们,直接使用数组定义赋值是更好的方法,而不是用Array(),使用定义赋值的会在该空间内保留这个键位,但是这个值不会定义,仅仅是保留位置,而使用Array(),则连键位都不给留,也没有值。

Array静态方法

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');
} // true

if (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。

你可能感兴趣的:(JS基础4)