JavaScript基础深入研究
一、DOM事件
1.事件阻止API
preventDefault() — 阻止浏览器默认
stopPropagation() — 阻止事件流冒泡
stopImmediatePropagation() — 阻止事件流冒泡+阻止目标节点上绑定的其他优先级低的回调函数
2.jquery中的return false
比如xx.on('click',function(){...})
...为return; — 结束当前回调函数
...为return false; — 结束当前回调函数+preventDefault()+stopPropagation()
3.事件优先级 ie兼容
标准浏览器以及ie9+中 addEventListener优先级按照绑定顺序;
ie8- attachEvent 优先级是随机的
ie ele.attachEvent('onclick',function(){...this..}) this指的window
二、javascript加载执行顺序
1.两个<script>代码段,因为执行顺序问题,上面的代码段调用下面的代码段函数的话,会报错。
2.如果分成预编译和执行两个阶段的话,预编译期会声明所有变量与函数,执行期会给变量赋值。
<script type="text/javascript">
alert(a);
var a=1;
b();
b=function(){alert(1);}
</script> a 代码不会报错,弹出undefined(因为已经声明,但是没有赋值)
b 代码报错,因为下面的函数是作为一个变量,预编译期并未赋值
三、正则
0.基础
/[a-z|A-Z]/ 匹配任意大小写以及|
/[-]/ 匹配-
/[-z]/ 匹配-或z
/[a-zA-Z]/ 匹配任意大小写
1.构造函数RegExp()创建正则时的转义
两种方式可以创建正则对象:正则表达式直接量和构造函数RegExp()。
注意:用构造函数的话,需要对特殊符号进行转义。详细:http://www.cnblogs.com/wang123/archive/2007/09/19/898668.html
var reg=new RegExp("\d");
reg.test("1");
//false
var reg=new RegExp("\\d");
reg.test("1");
//true
/\d/.test("1")
//true
2.replace+正则高级应用
replace的参数是(reg,fn)的时候,每个匹配都调用fn,它返回的字符串将作为替换文本使用。fn有四个参数:
1.匹配模式的字符串。
2.与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。
3.一个整数,声明了匹配在 stringObject 中出现的位置。
4.最后一个参数是 stringObject 本身。
"xx-yy-zz".replace(/-(.)/g,function(){
console.log(arguments);
return arguments[1].toUpperCase();
});
//["-y", "y", 2, "xx-yy-zz"]
//["-z", "z", 5, "xx-yy-zz"]
//"xxYyZz"
"xx-yy-zz".replace(/((-)(.))/g,function(){
console.log(arguments);
return arguments[1].toUpperCase();
});
//["-y", "-y", "-", "y", 2, "xx-yy-zz"]
//["-z", "-z", "-", "z", 5, "xx-yy-zz"]
//"xx-Yy-Zz"
四、元素的大小和位置
每个元素都有下面几个属性(注意要和鼠标事件的位置属性offsetX、clientX、pageX区别开)
大小:offsetWidth、clientWidth、scrollWidth
位置:offsetLeft、clientLeft、scrollLeft
当然对应的还有Height、Top。
| js API属性 | 说明 | jquery API |
| clientWidth | width+padding | innerWidth() |
| offsetWidth | width+padding+border | outerWidth() |
| scrollWidth | clientWidth+溢出部分 | —— |
| clientLeft | border-left | —— |
| offsetLeft | border外边缘与offsetParent的border内边缘的距离 | —— |
| scrollLeft | 滚动条向右滚动的距离,可写 | —— |
注:css中定义的width需要用o.style.width或window.getComputedStyle(o).width 来获取
五、函数作用域
var name = "window";
var object = {
name : "object",
funA : function(){
return this.name;
},
funB:function(){
return this.funA();
},
funC:function(){
return this.funA;
}
};
alert(object.funA());//object
alert(object.funB());//object
alert(object.funC()());//window
alert(object.funA.call(window));//window
alert(object.funC().call(object));//object
JavaScript基础深入研究的更多相关文章
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 【JavaScript基础系列】决定你的人生能走多远的,是基础。
前言 javaScript门槛非常低,一点语法,一个dom,一个bom就可以使用它开发大部分js应用,再加上现在层出不穷的框架极大的简化抽象了javaScript的使用方式,但是我们始终不能忘记的一点 ...
- javascript基础修炼(7)——Promise,异步,可靠性
开发者的javascript造诣取决于对[动态]和[异步]这两个词的理解水平. 一. 别人是开发者,你也是 Promise技术是[javascript异步编程]这个话题中非常重要的,它一度让我感到熟悉 ...
- JavaScript基础入门10
目录 JavaScript 基础入门10 正则表达式 为什么使用正则表达式? 正则表达式的应用场景 如何创建一个正则表达式 基础语法 具有特殊意义的转义字符 量词 字符类 贪婪模式 练习 邮箱验证 中 ...
- JavaScript——基础知识,开始我们的js编程之旅吧!
JavaScript基础第01天 1. 编程语言 编程语言: 可以通过类似于人类语言的"语言"来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming ...
- JavaScript基础语法资料
JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...
- JavaScript基础第01天笔记
JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...
- JavaScript基础
JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...
- 前端之JavaScript基础
前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...
随机推荐
- HDU(1285)—确定比赛名次
/*最近都在复习期末了...好久没做题,都快没智商了*/ 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后 ...
- python 之 Django 基础篇
1,Django流程介绍 MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据 ...
- SQL执行效率2-执行计划
以下语句可以进行SQL 语句执行时间分析,两个Go之间就是SQL查询语句 use Work--数据库名 go set statistics profile on set statistics io o ...
- Window.focus()让页面成为当前窗体
Window.focus()让页面成为当前窗体 最近在弄在线客服的时候,想在收到信息时候让窗体自动弹出到最前,最小化的时候也是弹出到最前.本来以为很麻烦,问了好多人,都不知道,在网上查资料也没有查到. ...
- 关于Java8函数式编程你需要了解的几点
函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...
- 编写一个基本的连接池来实现连接的复用&一些工程细节上的优化
package it.cast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQL ...
- Hadoop学习笔记—7.计数器与自定义计数器
一.Hadoop中的计数器 计数器:计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们通常可以在程序的某个位置插入计数器,用来记录数据或者进度的变化情况,它比日志更便利进行分析. ...
- MySQL 体系结构
标签:MYSQL/数据库/查询原理/体系结构 概述 学习一门数据库系统首先得了解它的架构,明白它的架构原理对于后期的分析问题和性能调优都有很大的帮助,接下来就通过分析架构图来认识它. 目录 概述 架构 ...
- 【玩转单片机系列002】 如何使用STM32提供的DSP库进行FFT
前些日子,因为需要在STM32F103系列处理器上,对采集的音频信号进行FFT,所以花了一些时间来研究如何高效并精确的在STM32F103系列处理器上实现FFT.在网上找了很多这方面的资料做实验并进行 ...
- VS2012 VS2015 的项目配置模板及其目录
建立的项目多了的时候 , 就希望能自己配置好一个项目模板,以后建立的项目自动使用这个模板就省事了,不用每次都要改, 每个项目都要改了! 经不懈努力, 终于 发现了 vs2015,vs2012 (我只用 ...