一、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基础深入研究的更多相关文章

  1. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  2. 【JavaScript基础系列】决定你的人生能走多远的,是基础。

    前言 javaScript门槛非常低,一点语法,一个dom,一个bom就可以使用它开发大部分js应用,再加上现在层出不穷的框架极大的简化抽象了javaScript的使用方式,但是我们始终不能忘记的一点 ...

  3. javascript基础修炼(7)——Promise,异步,可靠性

    开发者的javascript造诣取决于对[动态]和[异步]这两个词的理解水平. 一. 别人是开发者,你也是 Promise技术是[javascript异步编程]这个话题中非常重要的,它一度让我感到熟悉 ...

  4. JavaScript基础入门10

    目录 JavaScript 基础入门10 正则表达式 为什么使用正则表达式? 正则表达式的应用场景 如何创建一个正则表达式 基础语法 具有特殊意义的转义字符 量词 字符类 贪婪模式 练习 邮箱验证 中 ...

  5. JavaScript——基础知识,开始我们的js编程之旅吧!

    JavaScript基础第01天 1. 编程语言 编程语言: 可以通过类似于人类语言的"语言"来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言(Programming ...

  6. JavaScript基础语法资料

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  7. JavaScript基础第01天笔记

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  8. JavaScript基础

    JavaScript基础 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处 ...

  9. 前端之JavaScript基础

    前端之JavaScript基础 本节内容 JS概述 JS基础语法 JS循环控制 ECMA对象 BOM对象 DOM对象 1. JS概述 1.1. javascript历史 1992年Nombas开发出C ...

随机推荐

  1. Python数据分析

    一.安装Anaconda 1.下载:https://www.continuum.io/downloads 2.命令行创建和启动环境 conda create --name py35 python=3. ...

  2. WPF整理-Mutex确保Application单例运行

    有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来. 我们可以用Mutex来实现 打开App.xaml.cs,在App类中添加如下内容 ...

  3. IOS远程推送

    IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...

  4. 输出 n=6 的三角数字阵(JAVA基础回顾)

    package itcast.feng; import java.util.Scanner; //需求:输出 n=6 的三角数字阵 //1 //2 3 //4 5 6 //7 8 9 10 //11 ...

  5. ABP理论学习之通知系统

    返回总目录 本篇目录 介绍 订阅通知 发布通知 用户通知管理者 实时通知 通知存储 通知定义 介绍 通知(Notification)用于告知用户系统中的特定事件.ABP提供了基于实时通知基础设施的发布 ...

  6. 基于Quick-cocos2d-x的资源更新方案 一

    图片来自网络 思绪何来 昨天写了一篇关于更新方案的理论 游戏开发:通过路径搜索优先级来进行补丁升级(从端游到手游) 今天继续细化一下 由于新项目采用的是Quick-cocos2d-x,那我就直接给出我 ...

  7. [nodemon] Internal watch failed: watch ENOSPC错误解决办法

    运行环境:Ubuntu 16.04, WebStorm 2016.1.3, node.js v0.12.5, nodemon 1.9.2 在WS自带的终端输入nodemon server.js启动项目 ...

  8. ls /usr/linkapp 没反应

    ls /usr/linkapp ll /usr/linkapp  都是一样无反应 没有任何反应, ctrl + c /  ctrl + d 都不行 但是 ls /usr/linkapp/ | wc - ...

  9. ## Android 6.0 权限申请 ##

    Android 6.0 权限申请 1. 以前的权限申请(sdk<23) 直接在AndroidManifest.xml中申明即可: <uses-permission android:name ...

  10. Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx

    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...