学习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

  1. var weather = '晴天';
  2. var temperature = '26';
  3. if ((weather == '晴天') && (temperature <= 26)){
  4. alert('心情不错');
  5. }else{
  6. alert("心情糟糕");
  7. }

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

  1. var weather = '晴天1';
  2. var temperature = '26';
  3. if ((weather == '晴天') && (temperature <= 26)){
  4. alert('心情不错');
  5. }else if (weather == '晴天1') {
  6. alert('犹豫');
  7. }else{
  8. alert("心情糟糕");
  9. }

1.7 流程控制:switch

  1. var weatcher = '下雨';
  2. switch (weatcher){
  3. case '下雨':
  4. alert("犹豫");
  5. break;
  6. case '晴天':
  7. alert("心情不错");
  8. break;
  9. default:
  10. alert('心情糟糕');
  11. break;
  12. }

1.8 流程控制:while, continue:跳过当前循环进入下一个循环

  1. var i = 0;
  2. while (i < 10){
  3. i++;
  4. if (i % 2 == 0){
  5. continue;
  6. }
  7. console.log(i);
  8. }

1.9 流程控制: for

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

2.0 function函数

function functionName(参数1,参数2,...){...具体需要做的事情}

定义一个函数
  1. function alertMessage(){
  2. alert('Hello!');
  3. }
  4. alertMessage();
带参数的函数
  1. function alertMessage(message){
  2. alert(message);
  3. }
  4. alertMessage('What

2.1 函数表达式

  1. var alertMessage = function (message){
  2. alert(message);
  3. }
  4. alertMessage('What up!');

2.2 变量的范围

函数以外声明的变量为全局变量

函数以内声明的变量为内部变量

函数内部可以使用外部的变量

函数外部的变量不可以访问函数内部的变量


  1. var message = 'Hello world';
  2. var alertMessage = function (){
  3. alert(message);
  4. }
  5. alertMessage();
  1. 错误:还没有定义message_1
  2. var message = 'Hello world';
  3. var alertMessage = function (){
  4. // alert(message);
  5. var message_1 = '我好帅';
  6. }
  7. alert(message_1);
  8. //alertMessage();

2.3 Object对象

属性:(property)

方法:(method)

除了数字, 字符串,BOOL值,now,undefine其它的值都是对象

2.4 创建一个对象

可以通过.[]的方式来给对象赋值,采用键值对的形式.

  1. var body = {};
  2. body.formedIn = '2008';
  3. body['name'] = '中国';
  4. console.log(body);

  1. var body = {formeIn:'2008', bodyName:'中国'};
  2. //body.formedIn = '2008';
  3. //body['name'] = '中国';
  4. console.log(body);

2.5 对象里的数组

  1. var body = {
  2. formeIn: '2008',
  3. foundedIn:'中国',
  4. artistName:['A','B','C','D']
  5. };
  6. console.log(body);

访问数组:body.artistName[0] "A"

2.6 更新与删除对象里的属性的方法是一样的;删除:delete

  1. body.foundedIn = '美国'
  2. "美国"
  3. body
  4. Object {formeIn: "2008", foundedIn: "美国", artistName: Array[4]}
  5. delete body.foundedIn
  6. true
  7. body.foundedIn
  8. undefined

2.7 为对象添加方法:method

  1. var beyond = {
  2. formedIn: '1999',
  3. foundedIn: 'HongKong',
  4. artist: ['中国人','好人中','不会人','明天']
  5. };
  6. beyond.showArtist = function (){
  7. for (var i = 0; i < this.artist.length; i++){
  8. document.writeln(this.artist[i]);
  9. }
  10. };
  11. beyond.showArtist();

2.8 循环输出对象里的属性

  1. var beyond = {
  2. formedIn: '1999',
  3. foundedIn: 'HongKong',
  4. artist: ['中国人','好人中','不会人','明天']
  5. };
  6. beyond.showArtist = function (){
  7. for (var i = 0; i < this.artist.length; i++){
  8. document.writeln(this.artist[i]);
  9. }
  10. };
  11. beyond.showArtist();
  12. var property;
  13. for (property in beyond){
  14. if (typeof beyond[property] !== 'function'){
  15. console.log(beyond[property]);
  16. }
  17. }
  18. console.log(beyond);

2.9 Dom操作文档的接口

3.0 Dom文档树

根、元素、节点

父节点:parentNode

  1. <!doctype html> //document根
  2. <html lang="zh-hans"> //HTML--element元素,节点是node;html是元素节点;里面的属性是属性节点
  3. <head>
  4. <meta charset="utf-8">
  5. <title>测试</title>
  6. </head>
  7. <body>
  8. <h1 id="page-title">Coldplay</h1>
  9. <p>乐队成立</p>
  10. <script>
  11. </script>
  12. <script src="script.js"></script>
  13. </body>

3.1 获取文档中的元素:getElementById

  1. var pageTitle = document.getElementById('page-title')
  2. undefined
  3. pageTitle
  4. <h1 id=​"page-title">​Coldplay​</h1>​

3.2 getElementsByTagName:使用html标签来获取元素

3.3 querySelectorquerySelectorAll

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

querySelectorAll:返回所有找到的元素

3.4 访问元素的属性

  1. pageTitle.nodeName
  2. "H1"//元素节点的名称
  1. pageTitle.innerText
  2. "Coldplay"//元素节点里面的文字
  1. pageTitle.parentNode
  2. <body>​…​</body>​//元素的父节点
  1. pageTitle.previousElementSibling
  2. <title>​测试​</title>​//它的上一个元素的兄弟节点
  1. pageTitle.nextElementSibling
  2. <p>​乐队于什么来年​</p>​ //它的下一个元素的兄弟节点

//想要输出节点的文字,可以添加innerText就可以了

  1. pageTitle.nextElementSibling.innerText
  2. "乐队于什么来年"

查看子节点:childNodes

  1. artistList.childNodes
  2. [text]
  1. //节点的个数
  2. artistList.childElementCount
  3. 0

//第一个子节点

  1. artistList.firstElementChild
  2. null
  1. artistList.firstElementChild.innerText//可以输出节点内容
  2. //赋值给它
  3. artistList.firstElementChild.innerText = "马黑暗城"

还有一个last属性:artistList.lastElementChild ;返回最后一个元素的子节点

3.5 在文档中创建并插入新的节点

1.创建元素类型的节点:createElement

2.创建文本类型的节点 :createTextNode

3.插入节点:appendChildinsertBefore

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

//添加文档到某一个地方

先去找到它所在的位置,再使用appendChild方法来添加

  1. document.querySelector('.artist-list').appendChild(newMember)
  2. <li>​张三​</li>​

插入到另的地方使用:insertBefore

3.5 insertBefore在指定的位置播入节点

//删除

  1. document.querySelector('.artist-list').removeChild(newMember)
  2. <li>​张三​</li>​
  1. //第一个参数是需要插入的内容,第二参数是需要插入的节点位置
  2. artistList.insertBefore(newMember, artistList.firstChild)
  3. <li>​张三​</li>​

3.6 Event处理发生的事件

事件参数文档

处理事件常用的有3种方法:


  1. <!doctype html>
  2. <html lang="zh-hans">
  3. <head>
  4. <meta charset="UTF-8">
  5. <titile>Coldplay</titile>
  6. <style> </style>
  7. </head>
  8. <body>
  9. <a href="#" class="btn" onclick="console.log('被点击了!!!')" onmouseover="console.log('谁在我上面?')" onmouseout="console.log('离开了')">一个按钮</a>
  10. <script src="script.js"></script>
  11. </body>
  12. </html>

3.7 用对象的事件处理程序处理发生的事件

  1. window.onload = function(){
  2. //获取按钮
  3. var btn = document.querySelector('.btn');
  4. btn.onclick = function (){
  5. console.log('被点击了!!!');
  6. }
  7. btn.onmouseover = function (){
  8. console.log('偏偏在上面!!!');
  9. }
  10. btn.onmousemove = function (){
  11. console.log('离开了!!!');
  12. }
  13. }

3.8 addEventListener为对象绑定事件

有三个参数:

第一个参数:一个字符串,事件的名称

第二个参数:事件发生以后要做的事情

第三个参数:事件的捕获,是一个BOOL值,默认为false

  1. window.onload = function(){
  2. //获取按钮
  3. var btn = document.querySelector('.btn');
  4. function showMessage (event){
  5. console.log(event);
  6. }
  7. btn.addEventListener('click', showMessage,false);
  8. /*
  9. btn.onclick = function (){
  10. console.log('被点击了!!!');
  11. }
  12. btn.onmouseover = function (){
  13. console.log('偏偏在上面!!!');
  14. }
  15. btn.onmousemove = function (){
  16. console.log('离开了!!!');
  17. }
  18. */
  19. }

3.9 事件的传播

如果为false:为冒泡方式传播

如果为true:是事件捕获的方式传播

4.0 事件停止传播

event.stopPropagation();

学习ReactNative笔记整理一___JavaScript基础的更多相关文章

  1. javascript笔记整理(对象基础)

    一.名词解释 1.基于对象(一切皆对象,以对象的概念来编程) 2.面向对象编程(Object Oriented Programming,OOP) A.对象(JavaScript 中的所有事物都是对象) ...

  2. shell笔记整理1---vim编译器基础应用(参考鸟哥)

    1.linux中的配置文件都已是以ASCII的纯文本的形式存在 2.vim文本编译器. 一般模式:用vi打开的一个文件直接进入的就是一般模式,这个模式可以移动光标和删除字符,复制粘贴等,但是不能比那几 ...

  3. ReactNative学习笔记(二)基础进阶

    一个最简单的HelloWorld页面 先不多解释,直接上代码: import React, { Component } from 'react'; import {AppRegistry, Style ...

  4. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. windows下adb+flash_image刷机

    刷机是常事,总要把刷机包放在卡上,然后关机三键一起按到recovery再刷,觉得不爽,麻烦,所以研究出了adb调用flash_image刷system分区,全部脚本windows脚本执行,点点鼠标就o ...

  2. android slidingview

    http://blog.csdn.net/sky181772733/article/details/6969810 http://blog.csdn.net/ithomer/article/detai ...

  3. 基于Redis的消息订阅/发布

    在工业生产设计中,我们往往需要实现一个基于消息订阅的模式,用来对非定时的的消息进行监听订阅. 这种设计模式在 总线设计模式中得到体现.微软以前的WCF中实现了服务总线 ServiceBus的设计模式. ...

  4. 面试题32.从1到n整数中1出现的次数

    题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从 1到12这些整数中包含1的数字中1,10,11和12,1一共出现了5次 本题可以直接变量1到n的n个数然后分别计 ...

  5. 为什么Nginx的性能要比Apache高很多?

    为什么Nginx的性能要比Apache高很多? 这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的sele ...

  6. 基于PCA和SVM的人脸识别系统-error修改

    ------------------------------------------------- Undefined function or variable 'W'. Error in class ...

  7. hdu 5410 CRB and His Birthday(混合背包)

    Problem Description Today is CRB's birthday. His mom decided to buy many presents for her lovely son ...

  8. C#使用WebKitBrowser.dll填坑记

    .Net 自带的 Webbrowser 有着太多的平台限制.对于用户体验之上的今天,这无疑是一个噩梦, 然后就开始找 .Net下的WebKitBrowser.dll (后面提供下载) 从开源网站下到程 ...

  9. ThinkPHP3.2.3中三大自动中的缺陷问题

    我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后, ...

  10. OpenWrt sscanf问题之于MT7620N与AR9341

    在MT7620N平台做好了wifidog的相关调试工作,除了eth驱动.wireless性能问题,其余的都能够基本正常. 依据实际须要要对已完毕的工作在AR9341平台上实现. 事实上也简单.基本功能 ...