《JavaScript高級程序設(shè)計》

一乎串、基本概念

1店枣、parseInt、parseFloat

parseInt('123',10) // 第二個參數(shù)為轉(zhuǎn)換進制灌闺,默認(rèn)為10
parseFloat('12.12') //不接受第二個參數(shù)
parseFloat('12.12.123') //  12.12  制取第一個小數(shù)點艰争,其他的剔除

二、變量桂对、作用域和內(nèi)存問題

1、String類型:

ECMAScript中鸠匀,字符串不是引用類型蕉斜。

2、垃圾收集

## 顯式賦值Null,以便垃圾收集器收集宅此。
function createPerson(name){
    var localPerson = new Object();
    localPerson.name = name;
 }
var globalPerson = createPerson("Nicholas"); 
globalPerson = null;  // 手工解除 globalPerson 的引用,方便垃圾收集器收集

小結(jié):

JavaScript 變量有兩種類型:基本類型引用類型机错。

  • 基本類型包含以下 5 種基本數(shù)據(jù)類型: UndefinedNull父腕、Boolean弱匪、NumberString
  • 引用類型:對象璧亮。

基本類型值和引用類型值具 有以下特點:
? 基本類型值在內(nèi)存中占據(jù)固定大小的空間萧诫,因此被保存在棧內(nèi)存中;
? 從一個變量向另一個變量復(fù)制基本類型的值,會創(chuàng)建這個值的一個副本;
? 引用類型的值是對象枝嘶,保存在堆內(nèi)存中;
? 包含引用類型值的變量實際上包含的并不是對象本身帘饶,而是一個指向該對象的指針;
? 從一個變量向另一個變量復(fù)制引用類型的值,復(fù)制的其實是指針群扶,因此兩個變量最終都指向同 一個對象;
? 確定一個值是哪種基本類型可以使用 typeof操作符及刻,而確定一個值是哪種引用類型可以使用 instanceof 操作符。
? 離開作用域的值將被自動標(biāo)記為可以回收竞阐,因此將在垃圾收集期間被刪除缴饭。
?“標(biāo)記清除”是目前主流的垃圾收集算法,這種算法的思想是給當(dāng)前不使用的值加上標(biāo)記骆莹,然
后再回收其內(nèi)存颗搂。

三、引用類型

1汪疮、Array

## 1峭火、toString()、toLocalString()智嚷、valueOf()
var colors = ["red", "blue", "green"]; // 創(chuàng)建一個包含 3 個字符串的數(shù)組
 console.log(colors.toString());  // "red,blue,green"
 console.log(colors.valueOf());  // ["red","blue","green"]
 console.log(colors);  // ["red","blue","green"]

2卖丸、Array 的迭代方法

每個方法都接收兩個參數(shù):要在每一項上運行的函數(shù)和 (可選的)運行該函數(shù)的作用域?qū)ο蟆绊?this 的值。
傳入這些方法中的函數(shù)會接收三個參數(shù):數(shù)組項的值盏道、該項在數(shù)組中的位置數(shù)組對象本身稍浆。

? every():對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回 true猜嘱,則返回 true衅枫。
? some():對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對任一項返回 true朗伶,則返回 true弦撩。
? filter():對數(shù)組中的每一項運行給定函數(shù),返回該函數(shù)會返回 true的項組成的數(shù)組论皆。
? forEach():對數(shù)組中的每一項運行給定函數(shù)益楼。這個方法沒有返回值猾漫。
? map():對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組感凤。

以上方法都不會修改數(shù)組中的包含的值悯周。

## every()、some()
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
    return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
    return (item > 2);
});
alert(someResult); //true
## filter()
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
    return (item > 2);
 });
alert(filterResult);   //[3,4,5,4,3]
## map()
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
    return item * 2;
});
alert(mapResult);  //[2,4,6,8,10,8,6,4,2]
## forEach()
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item, index, array){
  item++;
});
console.log(numbers); // [1,2,3,4,5,4,3,2,1]

由于 forEach沒有返回值陪竿,且第一個參數(shù)的函數(shù)不會影響原數(shù)組禽翼,所以該方法基本只適用于遍歷取值。

3族跛、Array 的排序 sort(function(a,b){...})

回調(diào)函數(shù)中:a < b 返回負(fù)數(shù)不調(diào)換a闰挡、b的位置;返回 正數(shù)調(diào)換a庸蔼、b的位置解总;0不變

var a = [0,4,5,20,12,25,15];
a.sort(function(a,b){
  return a-b;  // 升序排列
  return b-a;  // 降序排列
})

四、面向?qū)ο?/h2>

1姐仅、繼承

/**
 *  繼承關(guān)系-- prototype
 */
function Animal() {
  this.name = 'animal';
}
Animal.prototype.sayName = function() {
  alert(this.name);
};

function Person() {}
console.log(Person.prototype.constructor);  // [Function: Person]

// 人繼承自動物
Person.prototype = Animal.prototype;
console.log(Person.prototype.constructor); // Function: Animal]

// 更新構(gòu)造函數(shù)為人  
Person.prototype.constructor = 'Person';
var person = new Person();
console.log(Person.prototype);  // { sayName: [Function] }
console.log(person.__proto__);  // { sayName: [Function] }
console.log(person.__proto__ === Person.prototype); // true
/**
 *  ************************************
 *  *********     實例對象的__proto__ 與該實例對象的構(gòu)造函數(shù)的 prototype 是絕對相等的花枫。
 *  ************************************
 */

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市掏膏,隨后出現(xiàn)的幾起案子劳翰,更是在濱河造成了極大的恐慌,老刑警劉巖馒疹,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佳簸,死亡現(xiàn)場離奇詭異,居然都是意外死亡颖变,警方通過查閱死者的電腦和手機生均,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腥刹,“玉大人马胧,你說我怎么就攤上這事∠畏澹” “怎么了佩脊?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垫卤。 經(jīng)常有香客問我威彰,道長,這世上最難降的妖魔是什么穴肘? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任歇盼,我火速辦了婚禮,結(jié)果婚禮上评抚,老公的妹妹穿的比我還像新娘旺遮。我一直安慰自己赵讯,他們只是感情好盈咳,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布耿眉。 她就那樣靜靜地躺著,像睡著了一般鱼响。 火紅的嫁衣襯著肌膚如雪鸣剪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天丈积,我揣著相機與錄音筐骇,去河邊找鬼。 笑死江滨,一個胖子當(dāng)著我的面吹牛铛纬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唬滑,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼告唆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晶密?” 一聲冷哼從身側(cè)響起擒悬,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稻艰,沒想到半個月后懂牧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡尊勿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年僧凤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元扔。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡躯保,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摇展,到底是詐尸還是另有隱情吻氧,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布咏连,位于F島的核電站盯孙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祟滴。R本人自食惡果不足惜振惰,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望垄懂。 院中可真熱鬧骑晶,春花似錦痛垛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仔雷,卻和暖如春蹂析,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碟婆。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工电抚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竖共。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓碳锈,卻偏偏與公主長得像评疗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容