JS中的事件

[JS中的事件分类]
* 1、鼠标事件:
* click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup
*
* 2、键盘事件:
* keydown: 键盘按下去触发
* keypress: 键盘按下并松开的瞬间触发
* keyup: 键盘抬起时触发
*
* [注意事项:(了解)]
* ① 执行顺序: keydown——keypress——keyup
* ② 长按时,会循环不断的执行keydown-keypress
* ③ 有keydown事件,不一定有keyup事件(事件触发过程中,鼠标移走,可能就没有keyup)
* ④ keypress只能捕获字母、数字、符号键,不能捕获功能键;keydown/keyup基本可以捕获所有功能键(特殊除外)
* ⑤ keypress区分大小写,keydown和keyup不区分;
* ⑥ keydown/keyup区分主键盘和小键盘,keypres不区分;
*
* [确定键盘触发按键]
* ① 在触发函数中,传入参数e,代表按键时间;
* ② 通过e.keyCode ,确认按键Ascii码值,进而确定按键;
* ③ 所有浏览器系统的写法(一般不必要):
* var evn = e||event; //取到键盘事件
* var code = evn.keyCode||evn.which||evn.charCode;//取到按键编码

JS中的事件分类
* 1、鼠标事件:
* click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup
* 2、键盘事件
* keydown:键盘按下时触发
* keyup:键盘抬起时触发
* keypress:键盘按下并抬起时触发
* [注意事项]
* ①执行顺序:keydown-keypress-keyup
* ②长按时,会不断执行keydown,keypress
* ③有keydown事件不一定有keyup事件,比如事件触发时,鼠标移走,可能就没有keyup;
* ④keypress事件只能捕获字母、数字、符号键,不能捕获功能键,可以捕获大小写;keydown/keyup基本可以捕获所有功能键(特殊除外),可以区分主键盘和小键盘
* 不区分大小写
*
* 【确定键盘触发按键】
* ①在触发函数中传入函数e,代表按键事件:
* ②通过e.keyCode确认按键Ascii码值,进而确定按键;
* ③兼容所有浏览器系统的写法(一般不必要):
* var evn = e||event 取到键盘事件
var code = evn.keyCode||evn.which||evn.charCode; 取到按键编码

JS中的内置对象

JS中的数组
* 1、数组的概念:在内存中连续存储的多个有序元素的结构
* 元素的顺序,称为下标,通过下标查找对应元素
* 2、数组的声明:
* ①通过字面量声明:var arr1=[];
* JS中同一数组可以储存多种数据类型(但一般同一数组只用于存放同一种数组类型)
* 例如: var arr1 = [1,"2",true,{},[]];
* ②new关键字声明:var arr2 = new Array(参数);
* >>>参数可以为:
* a:空,声明一个没有指定长度的数组
* b:数组的长度length,声明一个指定长度的数组,但数组的长度随时可变可追加
* 最大长度为(0~2^32-1);
* c:数组默认的N个值,new Array(1,"2",true);相当于[1,"2",true]
* 3、数组中元素的读写/增删
* ①读写:通过下标来访问元素,例如arr[2];
* ②增删:delete arr[n];删除数组的第n+1个值,但数组长度不变,对应位置的值为undefined
* arr3.push(7);数组最后增加一个值,相当于arr3[arr3.length]=7;
* arr3.unshift(0);数组的第0位插入一个值,其余位数顺延
* arr3.pop();删除数组最后一位,与delete不同的是,pop执行后数组长度也会减少一个,
* 相当于arr.length-=1;
* arr3.shift(),删除数组第0位,长度也会减一;
* 4、数组中其他常用方法
* ①join("分隔符"),将数组用指定分隔符分隔,链接为字符串。参数为空时,默认用逗号分隔
* ②concat();将数组与多个数组的值连接为新的数组:
* [1,2].concat[3,4],[5,6]=[1,2,3,4,5,6];连接时中括号至多拆一层
* [1,2].concat([1,2],[3,4]])=[1,2,1,2,[3,4]];多层括号中,以二维数组形式存在
* ③push();数组最后增加一个数,unshift():数组开始增加一个数;返回数组新的长度
* ④pop();删除数组最后一个; shift():删除数组第一个; 返回被删除的数
* 注:调用上述方法,原数组均会改变。
* ⑤recerse();数组翻转,逆序排列,原数组被改变。
* ⑥slice(begin,end);【原数组不会被改变】截取数组中某一部分,成为新数组
* >>>传递一个参数:默认为begin index,从这个开始,截到最后一个
* >>>传递两个参数,截取从begin到end区间,左闭右开(包含begin,不含end)
* >>>参数可以为负数,-1表示最后一个;
* ⑦sort(function);【原数组会被改变】对数组进行排序,
* >>>不指定排序顺序,按照数值的ascii码值进行排列;
* >>>传入排序函数:默认两个参数a,b,如果返回值>0,则a>b,反之返回<0
arr3.sort(function(a,b){
return a-b;//b在前,a在后,升序排列
return b-a;//a在前,b在后,降序排列
/*if(a>b){
return 1;
}else(a<b){
return -1;
}else{
return 0;
}
二维数组&稀疏数组(了解)
①稀疏数组:数组并不含有从0开始到length-1的所有索引(length值闭实际元素个数多)
②二维数组:var arr4 = [[1,2,3],[4,5,6],[7,8,9],[0,1,2]]相当于四行三列的矩阵
取出二维数组元素:arr4[行号][列号];可使用循环遍历
③indexof(value,index)返回value值对应的下表位置,若未找到,返回-1
lastindexof(value,index)返回最后一个value对应的下标位置,若未找到,返回-1
>>>若未指定index参数,默认在数组所有元素中查找,若指定index,则从当前index开始,向后查询

6、引用数组类型:(数组/对象)赋值时将原变量的地址,赋给新变量 ,两个变量修改的是同一数据,所以修噶其中一个变量,另一个跟着变化
基本数据类型:赋值时,是将变量的值,赋值给新的变量,两个变量属于不同的内存空间,修改其中一个,互不干扰。

boolean类型
*/
var isTrue = true;//单纯变量
var isTrue1 = new Boolean(true);//一个Boolean类型的对象
console.log(isTrue1)
/*
* number类
* nember.Max_VALUE 可表示的最大数
* number.Min_VALUE 课表时的最小数
* .toString();将数值转为字符串 相当于num+空字符串
* .tolocaleString();将数字按照本地格式的顺序转为字符串。一般三个一组加逗号
* .tofixed(n):将数字转为字符串,保留n位小数,四舍五入
* .toPrecision(n):将数字格式化为指定长度,n=不含小数点的所有位数和
* .valueOf()返回number对象的基本数字值
*/

/* 重要!!!!
* 字符串String
* 1、属性str.length返回字符串的长度
* 2、方法:
* .toLocaleLowerCase()所有字符转为小写
* .toUpperCase()所有字符转为大写
* .charAt(n)截取字符串中得第n个字符
.indexOf("查询子串",index)查询从index开始的,第一个子串的索引,没找到返回-1,通数组indexOf()方法
.substr(begin,end)截取子串,只写一个从begin到结束,写两个则从begin到end,左闭右开。
.rePlace(old,new);将字符串中第一个old替换为new。第一个参数可以为普通字符串,也可以是正则表达式
(普通字符串只能匹配第一个,正则可以根据具体情况区分)
.split("")将字符串通过指定分隔符分为数组,传入""空字符串,将把单个字符传入数组
*/

/*date类
* 1、 new Date(); 拿到当前最新时间;
* new Date("2017,4,4,14:58:12") 设置指定时间
* 2、常用方法:
* .getFullYear(): 获取4位年份
* .getMonth(): 获取月份 0~11
* .getDate(): 获取一月中的某一天 1~31
* .getDay(): 获取一周中的某一天 0~6
* .getHours() 返回 Date 对象的小时 (0 ~ 23)
* .getMinutes() 返回 Date 对象的分钟 (0 ~ 59)
* .getSeconds() 返回 Date 对象的秒数 (0 ~ 59)

自定义对象

【自定义对象】
* 1、基本概念
* ①对象概念:对象是包含一系列无序属性和方法的集合
* ②对象中的数据:是以键值对的形式存在的
* ③属性:描述对象特征的一系列变量 【对象中的变量】
* ④方法:描述对象行为的一系列方法 【对象中的函数 】
*
*
* 2、对象的声明:
* ①字面量声明 var obj = {
* key1=value1
* key2=value2
* func:function(){};
* };
* 对象中的键,可以是任何数据类型,但一般用作普通变量名(不需要"")即可
* 对象中的值可以是任何数据类型,单字与值符串必须用""包裹
* 多组键值对之间用英文逗号分隔,键值对的键与值之间英文冒号分隔
*
* ④new关键字var lisi = new Object();
lisi.name="李四"
lisi.say = function(){
console.log("我是"+this.name)
}
lisi.say();
*
* 3、属性和方法的读写
* ①.运算符:对象内部:this.属性名 this.方法名()
* 对象外部:对象名.属性名 对象名.方法名
* >>>如果key中包含特殊字符,则无法使用第①种方式,必须使用第②种
* >>>对象中,直接写变量名,默认调用全局变量,如果需要调用对象自身属性,则需要通过this关键字
* ②通过["key"]调用 对象名["属性名"] 对象名["方法名"]()
* ③删除对象的属性和方法:delete 对象名.属性名/方法名
*

JS续的更多相关文章

  1. 前端 JS&&DOM续

    JS续 1.序列化 JSON.stringify(obj)   序列化 JSON.parse(str)        反序列化 2.转义 decodeURI( )                   ...

  2. Web大文件上传控件-示例更新-Xproer.HttpUploader6.2

    版权所有 2009-2016荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  3. angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)

    昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...

  4. 从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)

    1.server端 支持数学运算的服务器,服务器的返回结果用json对象表示. math-server.js //通过监听3000端口使其作为Math Wizard的后台程序 var math = r ...

  5. 从零开始学习Node.js例子四 多页面实现数学运算 续一(使用connect和express框架)

    1.使用connect框架 .use方法用于绑定中间件到connect服务器,它会配置一系列在接到请求时调用的中间件模块,此例中我们要配置的中间件有favicon logger static rout ...

  6. 谈谈Ext JS的组件——布局的用法续二

    绝对布局(Ext.layout.container.Absolute) 绝对布局让我回忆到了使用Foxpro开发的时候,哪时候的界面布局就是这样.通过设置控件的左上角坐标(x.y)和宽度来进行的,由于 ...

  7. 谈谈Ext JS的组件——布局的使用方法续二

    绝对布局(Ext.layout.container.Absolute) 绝对布局让我回想到了使用Foxpro开发的时候,哪时候的界面布局就是这样,通过设置控件的左上角坐标(x,y)和宽度来进行的,因为 ...

  8. 在Node.js使用Promise的方式操作Mysql(续)

    在之后的开发中,为了做一些事务开发,我把mysql的连接代码从之前的query函数中分离出来了,直接使用原生的方法进行操作,但发现还是有点问题 原因是原生的node-mysql采用了回调函数的方式,同 ...

  9. js 实现图片上传 续

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

随机推荐

  1. 来自oaim的一些推广信息

    笔者几年工作经历亲身走访过一些玻璃深加工企业,发现很重要的一种工具装载玻璃的铁架.而许多企业由于缺少实际操作的经验,导致部分铁架从被制作出来就让我们的成品存在质量缺陷的隐患,最常见的是装好中空玻璃,当 ...

  2. C# Soap调WebService

    public class WebServiceHelper { /// <summary> /// Soap协议Post方法 /// </summary> /// <pa ...

  3. 网易2016年研发project师编程题(2)

    序 网易互联网的实习笔试立即就開始了,做几个练习题熟悉熟悉~嘿嘿~ 题目一: 小易的升级之路 小易常常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内 ...

  4. excel文件打开乱码解决

    Excel在读取csv的时候是通过读取文件头上的bom来识别编码的,如果文件头无bom信息,则默认按照unicode编码读取.(这个bom是微软自己定义的一种文件头部协定,顾名思义存储在文件头部,存储 ...

  5. nginx服务器的负载均衡和动静分离(未完)

    安装nginx,我的博客里面有介绍源码和yum安装. 实战:使用nginx实现动静分离的负载均衡集群 实战:使用haproxy实现负载均衡集群 LB负载均衡集群分为两类:LVS(四层)和Nginx或p ...

  6. atitit.TokenService  token服务模块的设计

    atitit.TokenService  token服务模块的设计 1. Token的归类1 2. Token的用途2 2.1. 访问控制2 2.2. 编译原理术语)编辑2 2.3. 数据处理2 1. ...

  7. SRIO调试(C6678->SRIO和Virtex6->FPGA)

    C6678->SRIO和Virtex6->FPGA   设计的板子到了SRIO调试阶段了,在板子上,一片V6和两片6678通过4XSRIO互联,中间没有Switch,总算搞定了相互之间的通 ...

  8. 机器学习经典算法具体解释及Python实现--线性回归(Linear Regression)算法

    (一)认识回归 回归是统计学中最有力的工具之中的一个. 机器学习监督学习算法分为分类算法和回归算法两种,事实上就是依据类别标签分布类型为离散型.连续性而定义的. 顾名思义.分类算法用于离散型分布预測, ...

  9. HDU5374 Tetris (2015年多校比赛第7场)大模拟

    思路: 先写好了几个函数.旋转,四种操作,推断能否够进行合并消除 题中有好几处要考虑的细节问题,如 自然下落究竟部时不进行合并的推断,而是当自然下落非法时才推断 假设消除一行,这一行上面的所以方块仅仅 ...

  10. nginx源码学习_数据结构(ngx_str_t)

    nginx中关于字符串的数据结构位于src/core/ngx_string.c和src/core/ngx_string.h中 先来看一下数据结构: typedef struct { size_t le ...