Object Oriented and Functional Programming - freecodecamp

【1】
可以使用構(gòu)造函數(shù)來創(chuàng)建對象。
構(gòu)造函數(shù) 通常使用大寫字母開頭,以便把自己和其他普通函數(shù)區(qū)別開。
下面便是一個 構(gòu)造函數(shù) 了:

var Car = function() {
  this.wheels = 4;
  this.engines = 1;
  this.seats = 1;
};```
在 構(gòu)造函數(shù) 中, this 指向被此 構(gòu)造函數(shù) 創(chuàng)建出來的 對象 。所以,當(dāng)我們在 構(gòu)造函數(shù) 中寫:
  this.wheels = 4;
這時,它創(chuàng)建出來的新對象將帶有 wheels 屬性,并且賦值為 4.
你可以認(rèn)為 構(gòu)造函數(shù) 描述了它所創(chuàng)建出來的對象。

【2】
使用構(gòu)造函數(shù)時,我們通過在它前面使用 new 關(guān)鍵字 來對它進(jìn)行調(diào)用,如下:
var myCar = new Car();
myCar 現(xiàn)在成為了 Car 的一個 實例(instance),它被 構(gòu)造函數(shù) 描述成下面的樣子:

{
wheels: 4,
engines: 1,
seats: 1
}```
記?。阂褂?new 關(guān)鍵字 去調(diào)用構(gòu)造函數(shù)。因為只有這樣,Javascript才知道這是要去構(gòu)造一個新 對象 ,并且把構(gòu)造函數(shù)中的 this 指向這個新對象。
現(xiàn)在,當(dāng) myCar (即 Car 的一個 實例 )創(chuàng)建后,他可以像普通對象一樣被使用,包括創(chuàng)建、訪問、修改它的屬性等,就像我們使用其他對象一樣。如下:
myCar.turboType = "twin";

【3】

修改 Bike 的 構(gòu)造函數(shù) ,使它有一個名為 gear 的 私有屬性 ,還有兩個公有方法,叫做 getGear 和 setGear ,這兩個方法用來獲得和設(shè)置 gear 的值。

??setGear的構(gòu)造函數(shù)如何做來設(shè)置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 方法可以方便的迭代數(shù)組,例子:

var timesFour = oldArray.map(function(val){
  return val * 4;
});```
 map 方法會迭代數(shù)組中的每一個元素,并根據(jù)回調(diào)函數(shù)來處理每一個元素,最后返回一個新數(shù)組。注意,這個方法不會改變原始數(shù)組。
在我們的例子中,回調(diào)函數(shù)只有一個參數(shù),即數(shù)組中元素的值 (val 參數(shù)) ,但其實,你的回調(diào)函數(shù)也可以支持多個參數(shù),譬如:元素的索引index、原始數(shù)組arr。
使用 map 方法來為 oldArray 中的每一項增加3,并且在 newArray 中保存它們。 oldArray 不應(yīng)該被改變。

var oldArray = [1,2,3,4,5];

// 只能在這一行下面寫代碼

var newArray = oldArray.map(function(item,arr,index){
return item + 3;

});```

【5】
數(shù)組方法 reduce 用來迭代一個數(shù)組,并且把它累積到一個值中。
使用 reduce 方法時,你要傳入一個回調(diào)函數(shù),這個回調(diào)函數(shù)的參數(shù)是一個 累加器 (比如例子中的 previousVal) 和當(dāng)前值 (currentVal)。
reduce 方法有一個可選的第二參數(shù),它可以被用來設(shè)置累加器的初始值。如果沒有在這定義初始值,那么初始值將變成數(shù)組中的第一項,而 currentVal 將從數(shù)組的第二項開始。
下面的例子使用了 reduce 來讓數(shù)組中的所有值相減:

var singleVal = array.reduce(function(previousVal, currentVal) {
  return previousVal - currentVal;
}, 0);```
使用 reduce 方法來讓 array 中的所有值相加,并且把結(jié)果賦值給 singleVal 。

【6】Filter Arrays with filter
filter 方法用來迭代一個數(shù)組,并且按給出的條件過濾出符合的元素。
filter 方法傳入一個回調(diào)函數(shù),這個回調(diào)函數(shù)會攜帶一個參數(shù),參數(shù)為當(dāng)前迭代的項(我們叫它 val )。
回調(diào)函數(shù)返回 true 的項會保留在數(shù)組中,返回 false 的項會被過濾出數(shù)組。
下面的代碼示例展示了使用 filter 來移除數(shù)組中值等于5的項:
 注意: 我們忽略了第二參數(shù)和第三參數(shù),因為例子中我們只需要第一參數(shù)就夠了。

array = array.filter(function(val) {
return val !== 5;
});```

【7】可以使用 split 方法按指定分隔符將字符串分割為數(shù)組

【8】可以使用 join 方法來把數(shù)組轉(zhuǎn)換成字符串,里面的每一個元素可以用你指定的連接符來連接起來,這個連接符就是你要傳入的參數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容