面向对象

1.单列模式

2.工厂模式

3.构造函数

(1) 类Js天生自带的类Object

基类Function Array Number Math Boolean Date Regexp String

1.事件

浏览器客户端上客户触发的行为都称为事件

所有的事件都是天生自带的,不需要我们去绑定,只需要我们去触发。

通过obj.事件名=function(){}

事件名:onmouseover onmouseout onmousedown onmousemove onmouseup

Onclick  onchange onfocus onblur 等等

当用户触发一个事件时,浏览器的所有详细信息都存在一个叫event的对象上。

我们把他叫事件对象

所有事件在绑定方法的时候,天生自带一个参数就叫event。

鼠标的坐标

event.clientX

event.ClientY

Event 的兼容性

在chrome下 event是undefined 在Ie低版本下是null,火狐下会报错

document.onclick=function(e){

var e=e||window.event

}

2.事件冒泡

什么叫事件冒泡

当给父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,

也会触发父级元素的相同事件,这种传播机制叫事件冒泡。

取消事件冒泡

Event对象有个属性叫cancelBubble默认值是false 改成true就取消当前事件冒泡

3.事件捕获

给一个元素绑定事件,普通写法是

obj.onclick=function(){} 这就相当于给obj的onclick属性赋值是一个道理。

obj.onclick=function(){}

这种写法有一点不好,后者会将前者覆盖掉。

事件绑定的第二种写法

标准浏览器用 addEventListener()这个方法

Ie低版本用attachEvent()这个方法

addEventListener(参数1,参数2,参数3)

参数1 是事件名 事件名不能带on

参数2 事件函数

参数3 布尔值,代表捕获不捕获 默认是false 不捕获但是冒泡。

事件捕获

  1. ie低版本没有捕获
  2. 普通事件绑定写法没有捕获

事件捕获

给父子元素用addEventListener()绑定同一个事件时,当触发子元素身上的事件,会先触发父元

素,然后在传递给子元素,这种传播机制叫事件捕获。

attachEvent()和addEventListener()二者区别

  1. attachEvent只用在iE8以下,addEventListener()适合标准浏览器
  2. attachEvent的事件名带on 而addEventListener事件名不带on
  3. attachEvent函数里面的this是window,而addEventListener函数里面的this是当前元素对象

attachEvent只有冒泡没有捕获addEventListener有冒泡也有捕获

4.Call()和apply()

Call和apply,就是改变函数里面的this指向的方法。

xxx.call()或xxx.apply()

特别强调下xxx必须是function,(普通函数,类,构造函数)

var obj={

name:"志伟"

}

function fn(){

console.log(this.name)

}

fn.call(obj)

Call()中第一个参数是null的时候,函数里的this还是指向原来的,不变。

所有事件都是异步的。

JS(JavaScript)的深入了解1(更新中···)的更多相关文章

  1. 百度前端学院js课堂作业合集+分析(更新中...)

    第一课:简陋的登录框 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  2. JS基础知识再整理..........不断更新中

    1.JS的五种基本数据类型:字符串.数值.布尔.null.underfined. 2.在JS中,字符串.数值.布尔三种数据类型,有其属性和方法: 3.字符串的三种常用方法[.indexof()..su ...

  3. JS - 二叉树算法实现与遍历 (更新中...)

    一.关于二叉树: 截图来自:https://segmentfault.com/a/1190000000740261 温馨提示:学习以及使用二叉树概念,心中永远有这么一个图,对于理解和接受二叉树有很大的 ...

  4. 常用JS、jquery 命令(不断更新中)

    设置用户粘贴板中的文本信息:window.clipboardData.setData('Text', location.href); 获取用户粘贴板中的文本信息: window.clipboardDa ...

  5. js坑爹笔试题目汇总(持续更新中)

    把你的面试官问倒,你就是一个合格的面试者了,以下总结一些易错的js笔试题目,会持续更新中.欢迎关注 1,考察this var length = 10 function fn(){ alert(this ...

  6. 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)

    Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...

  7. JavaScript资源收集分享,持续更新中。。。

    平时收集的一些JavaScript资源,分享给大家 jQuery UI jEasyUI Extensions http://jqext.sinaapp.com 布局做的挺不错,有比较复杂的菜单导航.P ...

  8. gulpfile.js不断更新中...

    Gulp压缩合并js/css文件,压缩图片,以及热更新教程 var gulp = require('gulp');var concat = require('gulp-concat');//- 多个文 ...

  9. 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中

    写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...

  10. js常见错误类型及chrome常见报错(更新中)

    ECMA-262 定义了下列 7 种错误类型: 1.Error 错误 2.EvalError 全局错误 eval函数没有正确执行 3.RangeError 范围错误 4.ReferenceError ...

随机推荐

  1. MSSQL→ 03:数据库操作

    一.数据库的操作 1.1.新增 使用SSMS图形界面创建数据库 在SQL Server 2008 中,通过SQL Server Management Studio 创建数据库 使用Transact-S ...

  2. linux的简单操作

    查看当前用户who am i 创建用户:sudo adduser lilei然后输入密码 查看用户:ls /home 用新用户登陆:su -l lilei 查看所属用户组:groups 用户名 新建文 ...

  3. Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题

    1:如果调用的子进程也是一个python脚本,则subprocess.Popen中的bufsize=1无效果.也就是说,即使设置了bufsize=1表示进行行缓冲,子进程如果不显示调用sys.stdo ...

  4. Python3 写的远程批量修改文件内容的脚本

    一.说明: 1.利用Python的paramiko模块,调用远程的shell命令去修改相应文件. 2.有一个专用配置文件,列出服务器清单. 3.Python循环读取配置文件的服务器IP去连接它,并执行 ...

  5. 详解 CALayer 和 UIView 的区别和联系

    http://www.cocoachina.com/ios/20150828/13244.html 作者:@武蕴牛x 授权本站转载. 前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 C ...

  6. 2019-8-29-dotnet-core-使用-sqlite-部署到-Centos-服务器

    title author date CreateTime categories dotnet core 使用 sqlite 部署到 Centos 服务器 lindexi 2019-08-29 19:1 ...

  7. oracle表复杂查询--创建数据库实例

    n  创建数据库有两种方法: 1)通过oracle提供的向导工具 2)我们可以用手工步骤直接创建 但我们创建完一个新的数据库实例后,在服务中就会有两个新的服务创建,这时,你根据实际需要去启动相应的数据 ...

  8. 容器化ICT融合初体验

    [编者的话]本次将分享的容器化ICT融合平台是一种面向未来ICT系统的新型云计算PaaS平台,它基于容器这一轻量级的虚拟化技术以及自动化的"微服务"管理架构,能够有效支撑应用快速上 ...

  9. python 获取当前ip

    import socket # 获取本机计算机名称 hostname = socket.gethostname() # 获取本机ip ip = socket.gethostbyname(hostnam ...

  10. 伪元素 before 和 after 各种妙用

    大家可能对伪类和伪元素有点迷糊,在介绍具体用法之前,简单介绍下伪类和伪元素.伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的. 这里整理总结下: 有时你会发现伪类元素使 ...