學習ReactNative筆記一 __JavaScript基礎

學習ReactNative筆記一 ___JavaScript基礎

★★★筆記時間- 2017-1-9 ★★★

前言: 現在跨平臺是一個趨勢,這樣可以減少開發和維護的成本。第一次看是看的ReactNative的網絡請求,使用的是fetch來使用的,然后深深的被吸引了。這是第一個整理的學習筆記,后續還有會更新。

學習鏈接地址: https://pan.baidu.com/s/1dFMJtAD 密碼: hs3e

學習課程目標

  1. 《JavaScript基礎》1小時27分
  2. 《ECMAScript 新功能》 53分鐘
  3. 《React 基礎》36分鐘
  4. 《React路由》20分鐘
  5. 《React 本地應用 1》56分鐘
  6. 《React 本地應用 2》46分鐘

一、 JavaScript基礎

1.1 注釋

單行注釋//
多行注釋/***/

1.2 變量

聲明變量:var band;

變量的聲明的條件: 不能以數字開頭,區分大小寫。

1.3 數據在類型

不需要設置它的指定的類型

獲取數據的類型使用typeof(fullName)結果string

轉換成整型:parseInt

轉換成浮點:parseFloat

1.4 字符串的處理

字符串參考文檔

設置字符串: var words = "三個月的上床睡覺覺"

截取第幾個字符串:words.charAt(0) "三";第0個是字符'三'

獲取最后一個字符:words.charAt(words.length - 1) "覺";使用字符長度減1來得到

字符在字符串的編號是indexOf:words.indexOf("床") 5;床在字符串words中的位置是第5個

獲取最后一個字符的位置:words.lastIndexOf("覺") 8;最后一個覺在字符串中的位置

截取字符串:words.substring(0,3) "三個月";在words中截取從第0個開始,取3個字符;substring參數:第一個是從哪里開始,第二個參數是多少個結束

替換字符串:words.replace("三個月","XLJ") "XLJ的上床睡覺覺"; replace參數:第一個為原來的字符串,第二個參數是替換成新的字符串

分隔符:words.split(',') ["中和淋濕在床上", "看人間繁華"]

1.5 數組

數組的創建:var array = []

數組是有順序的,查找順序使用:index

trackCD1[0] "長城"

添加數據在數組的最后: push trackCD1.push("開始了","明天美好")

添加數據在數組的最前面:unshift() trackCD1.unshift("我是第一個","你想怎么樣") 8

刪除數組中最后一個元素:pop() trackCD1.pop() "明天美好"

刪除數組中第一個元素:shift() trackCD1.shift() "我是第一個"

刪除某一個元素:delete delete trackCD1[1] true;只是刪除元素里的值,不會刪除這個元素

trackCD1 ["你想怎么樣", undefined × 1, "農民", "太陽一天", "Bye-Bye", "開始了"]

徹底刪除某個元素:splice() trackCD1 ["長城", "農民", "太陽一天", "太陽神鳥"] trackCD1.splice(3) ["太陽神鳥"] trackCD1 ["長城", "農民", "太陽一天"]

合并數組:concat

var trackCD2 = ["不可沖破","來吧"] undefined var tracks = trackCD1.concat(trackCD2) undefined tracks ["長城", "農民", "不可沖破", "來吧"]

1.6 流程控制:if else

var weather = '晴天';
var temperature = '26';

if ((weather == '晴天') && (temperature <= 26)){
    alert('心情不錯');
}else{
    alert("心情糟糕");
}

if ... else if ... else ...

var weather = '晴天1';
var temperature = '26';

if ((weather == '晴天') && (temperature <= 26)){
    alert('心情不錯');
}else if (weather == '晴天1') {
    alert('猶豫');
}else{
        alert("心情糟糕");
}

1.7 流程控制:switch

var weatcher = '下雨';
switch (weatcher){
    case '下雨':
        alert("猶豫");
        break;
    case '晴天':
        alert("心情不錯");
        break;
    default:
        alert('心情糟糕');
        break;
}

1.8 流程控制:while, continue:跳過當前循環進入下一個循環

var i = 0;
while (i < 10){
    i++;
    if (i % 2 == 0){
        continue;
    }
    console.log(i);
}

1.9 流程控制: for

var weak = ['星期一','星期二','星期三','星期四','星期五','星期六','星期天'];
for (var i = 0; i < weak.length; i++){
    console.log(weak[i]);
}

2.0 function函數
function functionName(參數1,參數2,...){...具體需要做的事情}

定義一個函數
function alertMessage(){
    alert('Hello!');
}

alertMessage();
帶參數的函數
function alertMessage(message){
    alert(message);
}

alertMessage('What

2.1 函數表達式

var  alertMessage = function (message){
    alert(message);
}

alertMessage('What up!');

2.2 變量的范圍
函數以外聲明的變量為全局變量
函數以內聲明的變量為內部變量
函數內部可以使用外部的變量
函數外部的變量不可以訪問函數內部的變量


var message = 'Hello world';
var  alertMessage = function (){
    alert(message);
}

alertMessage();
錯誤:還沒有定義message_1
var message = 'Hello world';
var  alertMessage = function (){
//    alert(message);
    var message_1 = '我好帥';
}
alert(message_1);
//alertMessage();

2.3 Object對象
屬性:(property)
方法:(method)
除了數字, 字符串,BOOL值,now,undefine其它的值都是對象

2.4 創建一個對象

可以通過.[]的方式來給對象賦值,采用鍵值對的形式.

var body = {};
body.formedIn = '2008';
body['name'] = '中國';
console.log(body);

var body = {formeIn:'2008', bodyName:'中國'};
//body.formedIn = '2008';
//body['name'] = '中國';
console.log(body);

2.5 對象里的數組

var body = {
    formeIn: '2008',
    foundedIn:'中國',
    artistName:['A','B','C','D']
};

console.log(body);

訪問數組:body.artistName[0] "A"

2.6 更新與刪除對象里的屬性的方法是一樣的;刪除:delete

body.foundedIn = '美國'
"美國"
body
Object {formeIn: "2008", foundedIn: "美國", artistName: Array[4]}
delete body.foundedIn
true
body.foundedIn
undefined

2.7 為對象添加方法:method

var beyond = {
   formedIn: '1999',
   foundedIn: 'HongKong',
   artist: ['中國人','好人中','不會人','明天']
};

beyond.showArtist = function (){
    for (var i = 0; i < this.artist.length; i++){
        document.writeln(this.artist[i]);
    }
};

beyond.showArtist();

2.8 循環輸出對象里的屬性

var beyond = {
   formedIn: '1999',
   foundedIn: 'HongKong',
   artist: ['中國人','好人中','不會人','明天']
};

beyond.showArtist = function (){
    for (var i = 0; i < this.artist.length; i++){
        document.writeln(this.artist[i]);
    }
};

beyond.showArtist();

var property;

for (property in  beyond){

    if (typeof  beyond[property] !== 'function'){
        console.log(beyond[property]);
    }

}

console.log(beyond);

2.9 Dom操作文檔的接口

3.0 Dom文檔樹
根、元素、節點
父節點:parentNode

<!doctype html> //document根
 <html lang="zh-hans"> //HTML--element元素,節點是node;html是元素節點;里面的屬性是屬性節點
<head>
    <meta charset="utf-8">
    <title>測試</title>
</head>

<body>
<h1 id="page-title">Coldplay</h1>
<p>樂隊成立</p>
    <script>
    </script>
    <script src="script.js"></script>
</body>

3.1 獲取文檔中的元素:getElementById

var pageTitle = document.getElementById('page-title')
undefined
pageTitle
<h1 id=?"page-title">?Coldplay?</h1>?

3.2 getElementsByTagName:使用html標簽來獲取元素

3.3 querySelectorquerySelectorAll

querySelector:返回找到的第一個元素

querySelectorAll:返回所有找到的元素

3.4 訪問元素的屬性

pageTitle.nodeName
"H1"http://元素節點的名稱
pageTitle.innerText
"Coldplay"http://元素節點里面的文字
pageTitle.parentNode
<body>?…?</body>?//元素的父節點
pageTitle.previousElementSibling
<title>?測試?</title>?//它的上一個元素的兄弟節點
pageTitle.nextElementSibling
<p>?樂隊于什么來年?</p>? //它的下一個元素的兄弟節點

//想要輸出節點的文字,可以添加innerText就可以了

pageTitle.nextElementSibling.innerText
"樂隊于什么來年"

查看子節點:childNodes

artistList.childNodes
[text]
//節點的個數
artistList.childElementCount
0

//第一個子節點

artistList.firstElementChild
null
artistList.firstElementChild.innerText//可以輸出節點內容
//賦值給它
artistList.firstElementChild.innerText = "馬黑暗城"

還有一個last屬性:artistList.lastElementChild;返回最后一個元素的子節點

3.5 在文檔中創建并插入新的節點

1.創建元素類型的節點:createElement
2.創建文本類型的節點 :createTextNode
3.插入節點:appendChildinsertBefore

var newMember = document.createElement('li')
undefined

//添加文檔到某一個地方
先去找到它所在的位置,再使用appendChild方法來添加

document.querySelector('.artist-list').appendChild(newMember)
<li>?張三?</li>?

插入到另的地方使用:insertBefore

3.5 insertBefore在指定的位置播入節點

//刪除

document.querySelector('.artist-list').removeChild(newMember)
<li>?張三?</li>?
//第一個參數是需要插入的內容,第二參數是需要插入的節點位置
artistList.insertBefore(newMember, artistList.firstChild)
<li>?張三?</li>?

3.6 Event處理發生的事件

事件參數文檔

處理事件常用的有3種方法:


<!doctype html>
<html lang="zh-hans">
<head>
    <meta charset="UTF-8">
    <titile>Coldplay</titile>
    <style> </style>
</head>

<body>
    <a href="#" class="btn" onclick="console.log('被點擊了!!!')" onmouseover="console.log('誰在我上面?')" onmouseout="console.log('離開了')">一個按鈕</a>
    <script src="script.js"></script>
</body>
</html>

3.7 用對象的事件處理程序處理發生的事件

window.onload = function(){

    //獲取按鈕
    var btn = document.querySelector('.btn');
    btn.onclick = function (){
        console.log('被點擊了!!!');
    }

    btn.onmouseover = function (){
        console.log('偏偏在上面!!!');
    }

    btn.onmousemove = function (){
        console.log('離開了!!!');
    }
}

3.8 addEventListener為對象綁定事件

有三個參數:

第一個參數:一個字符串,事件的名稱

第二個參數:事件發生以后要做的事情

第三個參數:事件的捕獲,是一個BOOL值,默認為false

window.onload = function(){

    //獲取按鈕

    var btn = document.querySelector('.btn');
    function showMessage (event){
        console.log(event);
    }
    btn.addEventListener('click', showMessage,false);

    /*
    btn.onclick = function (){
        console.log('被點擊了!!!');
    }

    btn.onmouseover = function (){
        console.log('偏偏在上面!!!');
    }

    btn.onmousemove = function (){
        console.log('離開了!!!');
    }
    */
}

3.9 事件的傳播
如果為false:為冒泡方式傳播
如果為true:是事件捕獲的方式傳播

4.0 事件停止傳播
event.stopPropagation();

??????如果對你有幫助,或覺得可以。請右上角star一下,這是對我一種鼓勵,讓我知道我寫的東西有人認可,我才會后續不斷的進行完善。

有任何問題或建議請及時issues me,以便我能更快的進行更新修復。

Email: marlonxlj@163.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容

  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,788評論 0 8
  • 感恩祖先的傳承!感恩父母將我撫養長大!感恩同學的交流讓我知道應對某些事件!感恩平臺創辦心連心公益讓我有了機會支持他...
    我不叫許仲斌閱讀 157評論 0 1
  • 青春是一抹淺淺的醉酒潦香。 蕩漾在素描紙上淡淡的清香,在細雨綿綿里繚繞飄搖,執傘的少女在青色的煙雨朦朧里留下一道清...
    彤華虛妄閱讀 152評論 0 0
  • 看到最后,我才知道,一個人的恨意是多么的強大,大到你死了也不夠,我要你死的身敗名裂,要你得榮譽都灰飛煙滅。因為,你...
    遠寒閱讀 355評論 2 0