【1】
可以使用构造函数来创建对象。
构造函数 通常使用大写字母开头,以便把自己和其他普通函数区别开。
下面便是一个 构造函数 了:
var Car = function() {
this.wheels = 4;
this.engines = 1;
this.seats = 1;
};```
在 构造函数 中, this 指向被此 构造函数 创建出来的 对象 。所以,当我们在 构造函数 中写:
this.wheels = 4;
这时,它创建出来的新对象将带有 wheels 属性,并且赋值为 4.
你可以认为 构造函数 描述了它所创建出来的对象。
【2】
使用构造函数时,我们通过在它前面使用 new 关键字 来对它进行调用,如下:
var myCar = new Car();
myCar 现在成为了 Car 的一个 实例(instance),它被 构造函数 描述成下面的样子:
{
wheels: 4,
engines: 1,
seats: 1
}```
记住:要使用 new 关键字 去调用构造函数。因为只有这样,Javascript才知道这是要去构造一个新 对象 ,并且把构造函数中的 this 指向这个新对象。
现在,当 myCar (即 Car 的一个 实例 )创建后,他可以像普通对象一样被使用,包括创建、访问、修改它的属性等,就像我们使用其他对象一样。如下:
myCar.turboType = "twin";
【3】
修改 Bike 的 构造函数 ,使它有一个名为 gear 的 私有属性 ,还有两个公有方法,叫做 getGear 和 setGear ,这两个方法用来获得和设置 gear 的值。
??setGear的构造函数如何做来设置gear的值
var Car = function() {
// this is a private variable
var speed = 10;
// these are public methods
this.accelerate = function(change) {
speed += change;
};
this.decelerate = function() {
speed -= 5;
};
this.getSpeed = function() {
return speed;
};
};
var Bike = function() {
// 只能在这一行下面写代码
var gear = 10;
this.setGear = function(){
return getGear;
};
this.getGear = function(){
return gear;
};
};
var myCar = new Car();
var myBike = new Bike();```
#正解:
var Car = function() {
// this is a private variable
var speed = 10;
// these are public methods
this.accelerate = function(change) {
speed += change;
};
this.decelerate = function() {
speed -= 5;
};
this.getSpeed = function() {
return speed;
};
};
var Bike = function() {
// 只能在这一行下面写代码
var gear = 10;
this.setGear = function(newGear){
gear = newGear;
};
this.getGear = function(){
return gear;
};
};
var myCar = new Car();
var myBike = new Bike();```
【4】Iterate over Arrays with map
map 方法可以方便的迭代数组,例子:
var timesFour = oldArray.map(function(val){
return val * 4;
});```
map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组。注意,这个方法不会改变原始数组。
在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) ,但其实,你的回调函数也可以支持多个参数,譬如:元素的索引index、原始数组arr。
使用 map 方法来为 oldArray 中的每一项增加3,并且在 newArray 中保存它们。 oldArray 不应该被改变。
var oldArray = [1,2,3,4,5];
// 只能在这一行下面写代码
var newArray = oldArray.map(function(item,arr,index){
return item + 3;
});```
【5】
数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。
使用 reduce 方法时,你要传入一个回调函数,这个回调函数的参数是一个 累加器 (比如例子中的 previousVal) 和当前值 (currentVal)。
reduce 方法有一个可选的第二参数,它可以被用来设置累加器的初始值。如果没有在这定义初始值,那么初始值将变成数组中的第一项,而 currentVal 将从数组的第二项开始。
下面的例子使用了 reduce 来让数组中的所有值相减:
var singleVal = array.reduce(function(previousVal, currentVal) {
return previousVal - currentVal;
}, 0);```
使用 reduce 方法来让 array 中的所有值相加,并且把结果赋值给 singleVal 。
【6】Filter Arrays with filter
filter 方法用来迭代一个数组,并且按给出的条件过滤出符合的元素。
filter 方法传入一个回调函数,这个回调函数会携带一个参数,参数为当前迭代的项(我们叫它 val )。
回调函数返回 true 的项会保留在数组中,返回 false 的项会被过滤出数组。
下面的代码示例展示了使用 filter 来移除数组中值等于5的项:
注意: 我们忽略了第二参数和第三参数,因为例子中我们只需要第一参数就够了。
array = array.filter(function(val) {
return val !== 5;
});```
【7】可以使用 split 方法按指定分隔符将字符串分割为数组
【8】可以使用 join 方法来把数组转换成字符串,里面的每一个元素可以用你指定的连接符来连接起来,这个连接符就是你要传入的参数。