JavaScript基本知识点整理(超实用)
絮叨絮叨
今天给大家分享一下这两天自己整理的JavaScript部分的笔记,下面都是我觉得比较常用的,希望能帮助到大家!
1、 导入JS的三种方式 |
①在HTML标签中,直接内嵌JS。<button onclick=”func()”></button>
②在HTML页面中使用<script></script>包裹JS代码。<script> JS代码 </ script >
③引入外部的JS文件。<script language=”javascript” src=”JS路径”></ script >
2、 JS的常用数据类型 |
String 字符串 “str” ‘str’
Boolean true/false
Number 数值
Object 对象
Null 特殊的空值
Undefined未定义(var声明了,但未赋值)
3、 常用的数值函数 |
isNaN():检测是一个变量,是否是非数值。先用Number()函数尝试转换,如果不能转为数值,则为NaN
Number():
转换任何数据类型,为数值。 字符串含有其他字符,不能转。 null -> 0
True=1 false=0 纯数值字符串=相应的数字 空字符串=0。 Undefined -> NaN
ParseInt():将字符串转为整数类型。
纯数值=数值,会抹掉小数点 空字符串 = NaN
包含其他字符的字符串,会截取第一个非数值字符串前面的部分
ParseInt只能转字符串,转其他类型,全是NaN
4、JS中的运算符的优先级 |
() | 小括号最高 |
! ++ -- | 单目运算符 |
* / % | |
+ - | |
> < >= <= | |
== != | |
&& | 与或同时存在时,&&比||高 |
|| | |
= += -= *= /= | 最低的是各种赋值 |
5、if结构、循环结构、支持的判断结果 |
Boolean:false假 true真
String:空字符串为假 一切非空为真
Number: 0为假 一切非0为真
Null、Undefined、NaN: 全为假 Object:全为真
6、JS中的DOM |
Document.getElementById/Name/TagName/ClassName(); //取元素节点
GetAttribute(“属性名”); setAttribute(“属性名”,”属性值”); // 取到、设置属性节点
InnerText[=“文本”] : 取到/设置 文本节点
InnerHTML[=”html代码”]: 取到/设置 元素内部的html代码
tagName: 取到当前节点的标签名
【修改样式系列】
.style.样式 = “样式值” .style.cssText = “多个CSS键值对” .className=”class名”
【层次节点系列】
1 .childNodes:(数组)获取元素的所有子节点 .children
2 .firstChild:获取元素的第一个子节点; firstElementChild
3 .lastChild:获取元素的最后一个子节点; lastElementChild
4 . parentNode:获取当前节点的父节点;
5 .previousSibling:获取当前节点的前一个兄弟节点
6 .nextSibling:获取当前节点的后一个兄弟节点
7 . attributes:取到所有属性节点[数组]。
【创建新增节点】
- .createElement(“标签名”) 创建一个节点 .setAttribute(“”,””)给新节点设置属性
- 父节点.appendChild(node) 父节点最后追加新节点;
- 父节点.insertBefore(newNode,oldNode) 在父节点的oldNode之前插入newNode
- 需克隆节点.cloneNode(true/false);默认false:只克隆当前节点,而不克隆子节点;true:克隆所有子节点。
【删除替换节点】
- 父节点.removeChild(childNode); 从父节点删除子节点
- 父节点.replaceChild(newNode,oldNode); 用newNode替换掉oldNode;
【HTML-DOM 操作表格】
1、表格对象
①Rows: 取到所有行对象,数组格式;
②InsertRow(index); 在index后面插入一个新行
③DeleteRow(index); 删除表格第index+1行;
2、行对象
①Cells: 取到所有单元格对象,数组格式; rowIndex:返回当前行索引;
②InsertCell(index): 在index个单元格后,插入一个新单元格;
③DeleteCell(index): 删除index+1个单元格;
3、单元格对象
①cellIndex: 返回当前单元格索引;
②InnerText、InnerHTML:设置单元文字内容。
7、键盘事件&确定键盘按键 |
1、键盘事件:keyDownàkeyPressàkeyUp
2、长按时:不断的执行keyDownàkeyPress
有keyDown,不一定有keyUp(当按键时,鼠标将焦点点走,就没有keyUp事件)
3、确认一个按键的方法
Dom.keyDown = function(e){
Var evn = e||window.event;
Var code = evn.keyCode||evn.charCode||evn.which;
If(code==13){ 回车 }}
4、判断组合键原理:声明多个组合键对应的标志变量(全局变量,默认为0),当按键keyDown时,对应的标志变量为1;当按键Up时,对应的标志变量置0;通过判断多个标志变量,是否同时为1,进而判断按键是否同时按下。
8、事件冒泡&事件捕获&阻止默认事件 |
【事件冒泡】
当触发某DOM元素的事件时,如果祖先元素存在同类型事件。则,事件会从当前元素开始,逐个往上触发所有祖先元素的同类型事件。
>>> 如何添加事件,会导致事件冒泡:
DOM0模型,均为事件冒泡;
IE中使用.attachEvent()添加的事件,均为冒泡;
其他浏览器,.addEventListener添加的事件,当第三个参数为false时,为冒泡;
>>> 如何阻止事件冒泡:
IE浏览器中:将e.cancelBubble属性设为true;
其他浏览器:调用e.stopPropagation();方法
【事件捕获】
与冒泡相反,当触发某元素事件时,会从根节点开始,逐个向下触发祖先元素的同类型事件,直到当前DOM为止。
>>> 如何产生事件捕获:
使用addEventListner()添加事件,并且将第三个参数设置为true
【阻止各种标签的默认事件】
IE浏览器中:将e.returnValue属性设为false;
其他浏览器:调用e.preventDefault();方法
9、JS中数组的常用方法 |
.splice(index,num):从index开始,删除num个元素;
push(n):数组最后插入一个元素 pop():删除数组最后一个元素
unshift(n):在数组第0位插入一个元素 shift():删除数组第一个元素
sort([functuion]): 默认按照ASCII码值排序,可以传入回调函数进行排序;
升序降序排列: function(a,b){ Return a-b; //升序 return b-a;//降序 }
Reverse: 数组反转
Join([‘分隔符’]):将数组以指定分隔符链接为字符串,不填默认用“,”
Concat(arr1,arr2,[arr3,[arr4,[……]]]):链接多个数组(如果数组为多维数组,只拆第一层[])
indexOf(n):查询元素在数组的第一个下标 lasrIndexOf(n):查询元素在数组最后一个下标
slice(begin,end); 截取数组从begin开始,到end的子数组,左闭右开。
10、Number类常用方法 |
.toString():转为字符串 , 相当于num+””
.toFixed(n):将数字转为字符串,保留n位小数,四舍五入
.valueOf():返回Number对象的基本数字值
11、String类常用方法 |
.split(“char”); 将字符串通过指定字符分割为数组;如果传入””,则将所有字符放入数组;
.indexof(char): 查询某个字符,在字符串的下标;
.charAt(index): 截取字符串的第index个字符
. substring(begin,end):截取字符串从begin开始,到end的子串。左闭右开
.replace(old,new):将字符串的old部分子串,替换为new(如果old是字符串,只替换第一个符合要求的子串;如果old是正则,则按照正则要求替换 //g ,替换全局)
.toLowerCase() 所有字符转为小写;
.toUpperCase() 所有字符转为大写;
12、Date类常用方法 |
.getFullYear(): 获取4位年份
.getMonth(): 获取月份 0~11
.getDate(): 获取一月中的某一天 1~31
.getDay(): 获取一周中的某一天 0~6
.getHours() 返回 Date 对象的小时 (0 ~ 23)
.getMinutes() 返回 Date 对象的分钟 (0 ~ 59)
.getSeconds() 返回 Date 对象的秒数 (0 ~ 59)
13、 正则表达式的声明 |
① 字面量声明: /[正则表达式]/[表达式模式g/i/m]
② new关键字实现:var reg = new regExp(“正则表达式”,”表达式模式”);
[表达式模式]:
g:全局匹配。默认只匹配第一项符合要求;
i: 忽略大小写。默认要求大小写一致;
m:多行匹配。(当字符串分为多行时,多行匹配默认,会有多个开头结尾。默认,一个字符串不管分多少行,只有一个开头一个结尾。)
14、正则表达式的常用规则 |
匹配的数据:
/d 数字0-9 相当于[0-9] /D 非数字0-9 相当于[^0-9]
/w 字母、数组、下划线 [0-9a-zA-z_] /W 非字母、数字、下划线 [^0-9a-zA-z_]
/s 任何空字符 /S 非空字符 . 除了换行符的任意字符
特殊符号:
[] 需要匹配的数据 () 分组,使用|的时候进行分组
| 或,两边都可以。默认从头到尾分两块,如果用(a|b),则只匹配()里面部分
^ 在[]内部,表示整个[]内部取非;在正则表达式开头,表示整个字符串的开始;
$ 表示整个正则模式的结束。
匹配次数:
{} 表示匹配前面部分的次数。 {3,5} 3-5次 {3,} 3或多次 {3} 匹配3次
? 匹配前面部分0-1次 +: 1或多次 *:匹配任意次数
15、JS中的面向对象和面向过程 |
面向过程是指专注于如何去解决一个问题的过程步骤。
面向对象是指专注于由哪一个对象来解决这个问题。
16、面向对象的三大特征 |
继承、封装、多态
17、什么叫封装? |
封装分为方法的封装和属性的封装
方法的封装是指将类内部的函数进行私有化处理,不对外提供调用接口,无法在类外部使用
属性的封装是指将类中的属性进行私有化处理,对外不能直接使用对象名访问,而是提供set/get方法,让外部使用set/get方法,来对属性进行操作
18、JS中的this指向问题 |
总的来说,就是谁最终调用函数,this就指向谁!
This指向的规律:
①通过函数名()调用的,this永远指向window
②通过对象.方法调用的,this指向这个对象
③函数作为数组的一个元素,用数组下标调用的,this指向这个数组
④函数作为window内置函数的回调函数(setTimeout,setInterval)使用,this指向window
⑤函数作为构造函数,使用new关键字声明,this指向新new出的对象
19、什么叫做继承?实现继承的几种方法? |
继承:使用一个子类,继承另外一个父类,那么子类就可以自动拥有父类的所有属性和方法
①通过扩展object实现继承
②使用原型实现继承
③使用call、apply、bind实现继承
通过扩展object实现继承:
通过循环,将父类对象的所有属性和方法,全部赋给子类对象。关键点在于for-in循环,及时不扩展object,也能通过简单的循环实现操作
使用原型实现继承:
将父类对象,赋值给子类的prototype,那么父类对象的属性和方法就会出现在子类的prototype中。那么,实例化子类时,子类的prototype又会到子类对象的__proto__中,最终,父类对象的属性和方法,会出现在子类对象的__proto__对象中。
使用call、apply、bind实现继承:
通过函数名调用这三个函数,可以强行将函数中的this指定为某个对象
20、什么叫做闭包? |
在函数内部,定义一个子函数,子函数可以访问父函数的私有变量。可以在子函数中进行操作,最后将子函数return返回
今天就给大家分享到这儿吧~~~JS中常用的知识点基本都概括了,大家如果觉得写的不详细的话,可以查看菜鸟教程或者查看帮助文档,有什么不足的地方请大家留言~~~谢谢大家了~~
JavaScript基本知识点整理(超实用)的更多相关文章
- JavaScript高级知识点整理
一.JS中的数组 1.数组的三种定义方式 (1).实例化对象 var aArray=new Array(1,2,3,4,5); (2).快捷创建 var aTwoArray = [1,2,3,&quo ...
- javascript 完整知识点整理
by 蔡舒啸 目录 一 5种基本类型 typeof 关键字 三种强制类型转换 日期 二 if语句for语句whiledo-whileswitch-case 比较运算符 逻辑运算符 if for语句 w ...
- javascript学习(知识点整理)
有了这个代码,就可以在定义 中增加更多的控制了 后面会举例关于extjs定义的更多控制 此种方案可以解决定义时需要一些函数调用的情况 函数作用域和声明提前: 即由于js是解释性语言,在执行前会 ...
- JavaScript常用知识点整理——思维导图
如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/b8327462051289 有道云笔记图片链接 http://note.youdao.com/ ...
- JS知识点整理(二)
前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...
- 前端开发 JavaScript 干货知识点汇总
很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...
- web前端面试知识点整理
一.HTML5新特性 本地存储 webStorage websocket webworkers新增地理位置等API对css3的支持canvas多媒体标签新增表单元素类型结构标签:header nav ...
- HTML&&CSS基础知识点整理
HTML&&CSS基础知识点整理 一.WEB标准:一系列标准的集合 1. 结构(Structure):html 语言:XHTML[可扩展超文本标识语言]和XML[可扩展标记语言] 2. ...
- Javascript重要知识点梳理
Javascript重要知识点梳理 一.Javascript流程控制 js中常用的数据类型 var关键字的使用 if – else if – else switch while for 二.Javas ...
随机推荐
- SqlServer批量备份多个数据库且删除3天前的备份
/******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...
- LinearGradientBrush,RadialGradientBrush的样式说明
LinearGradientBrush 使用线性渐变绘制区域.线性渐变沿直线定义渐变.该直线的终点由线性渐变的 StartPoint 和 EndPoint 属性定义.LinearGradientBru ...
- zabbix部署
zabbix部署 ----2016年年终总结 二 服务器端安装 yum install zabbix-server 客户端安装 yum install zabbix-agent 配置Server ...
- 我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明
PS:再次说明一下,原本不想写的太啰嗦的,可之前那个系列发布后发现,好多朋友都想马上拿到代码立即能上手开发自己的项目,对代码结构.基础常识.分类目录与文件功能结构.常用函数......等等什么都不懂, ...
- AspectCore.Extension.Reflection : .NET Core反射扩展库
在从零实现AOP的过程中,难免会需要大量反射相关的操作,虽然在.net 4.5+/.net core中反射的性能有了大幅的优化,但为了追求极致性能,自己实现了部分反射的替代方案,包括构造器调用.方法调 ...
- pycharm快捷键(转载)
1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + ...
- BZOJ-1045-[HAOI2008] 糖果传递(中位数原理)
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数nn<=1'000'000,表示小朋友的个 ...
- Android+ESP8266+路由器实现远程控制(基于花生壳域名方式访问)
x先说一下实现的功能,其实就是远程控制 和这篇文章的控制 http://www.cnblogs.com/yangfengwu/p/5295632.html 应该说是这篇文章的升级,解决这篇文章由 ...
- C++参数传递(01)
*是取值运算符,对地址使用可以获得地址中储存的数值:对于指针a,*a表示取a中的值 &是地址运算符,对变量使用可以获得该变量的地址. 对于变量b,*b表示取b的地址 别名(引用):主要用于做函 ...
- Yii2之组件的注册与创建
今天本来打算研究一下yii2.0的AR模型的实现原理,然而,计划赶不上变化,突然就想先研究一下yii2.0的数据库组件创建的过程.通过对yii源码的学习,了解了yii组件注册与创建的过程,并发现原来y ...