js作用域对象与运用技巧
1. JS作用域
1.1 全局作用域和局部作用域
- 函数外面声明的就是 全局作用域
- 函数内是局部作用域
- 全局变量可以直接在函数内修改和使用
- 变量,使用
var是声明,没有var是使用变量。 如果在函数内使用var来声明变量,在函数内会覆盖同名的全局变量
1.2 变量提升
- 在变量声明之前 去使用变量 会得到 undefined ,而不是报错
- 函数内,如果声明了跟全局变量同名的局部变量, 在声明之前使用改变量,得到undefined( 该变量已经是局部的啦)
1.3 作用域链
- 当一个作用域 使用某个变量时,先从本作用域中找, 如果没有去父作用域,再没有,父作用域的父作用域,一直到 全局作用域。 构成了一个作用域链
1.4 闭包
- 通常需要 函数中 返回一个 函数
- 目的 把一个局部作用域的 数据 让外层的作用域使用
1.5 ES6 新增一 块状作用域
let关键字也可以声明变量,同var一样- 但是
let关键字声明的变量,会在结构语句中产生 块状作用域 - ES6建议 使用let代替 var
2. JS对象
2.1 构造函数和对象
构造就是类
function User([参数]) {
this.属性 = 值;
this.属性 = 值;
this.方法 = function(){
}
}
#实例一个对象
new 构造函数();
如果构造函数没有参数 可以 不加()
2.2 JS原型和原型链
原型
- 每个对象 都有原型 (原型仍然是一个对象)
- 对象可以继承原型的属性和方法
__proto__所有对象都有该属性, 该属性指向该对象的原型
原型链
- 原型作为对象 也有原型
- 原型的原型的原型 就构成了 原型链
- 使用对象中某个属性的时候,先从对象中找,如果没有,从原型上找,原型如果也没有,继续向上找,直到顶层 (顶层的原型对象是一个 类型(类)(构造函数)是Object 的对象)
2.3 JS对象属性的调用
. 点
obj.name
obj.age
[] 中括号
obj['name']
obj['age']
任意的对象
都可以在对象实例化完成后,
添加属性和方法
2.4 Object 构造函数
js內建的构造方法叫Object
var obj = new Object()
json方式定义对象
var obj = {属性:值,属性:值}
new Object()的简写
实用技巧
3.1 从页面中获取元素
document.getElementById()
根据ID的值获取元素对象
document.getElementsByTagName()
根据标签名取元素对象
document.getElementsByClassName()
根据class的值取元素对象
document.getElementsByName()
根据name属性的值获取元素对象
document.querySelector(css选择器)
返回满足条件的第一个元素对象
document.querySelectorAll(css选择器)
返回所有满足条件元素组成的类数组对象
3.2 给元素绑定事件
先获取元素
ele.onclick = function(){
}
获取元素的类数组对象, 遍历,挨个给每个元素绑定事件
3.3 修改元素的CSS样式
ele.style.css属性名
ele.style.background
ele.style.border
ele.style.backgroundColor
ele.style['background-color']
3.4 设置元素的class值
ele.className
可以赋值,也可以获取
ele.classList.add('值')
添加一个class值
ele.classList.remove('值')
删除一个class值
ele.classList.toggle('值')
自动切换一个class值(有就删除,没有就添加)
3.5 事件
onclick 单机
ondblclick 双击
oncoutextmenu 右击
onmouseover/onmouseenter
鼠标悬浮在元素上
onmouseout/onmouseleave
鼠标离开元素
onmousemove 鼠标在上面移动
onmousedown 鼠标的按键按下
onmouseup 鼠标的按键抬起
3.6 js定时
单次定时
setTimeout(fn,delay)
clearTimeout() 清除定时
多次定时
setInterval(fn,dealy)
clearInterval() 清除定时
js作用域对象与运用技巧的更多相关文章
- js对对象的校验技巧,随时更新
js中,字符串长度用length. 若不确定一个Map里,是否存在某个对象,则用underfind 去校验
- js 操作对象的小技巧
来源:https://www.w3cplus.com/javascript/javascript-tips.html 1.使用...运算符合并对象或数组中的对象 同样使用ES的...运算符可以替代人工 ...
- js作用域及对象以及一些常用技巧
回顾 流程控制(语句) 分支 if () { }if () { } else { }if () { } else if () { } else if () { ...
- JavaScript函数作用域与对象以及实用技巧
1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使 ...
- Angular JS - 4 - Angular JS 作用域与控制器对象
1. 控制器对象使用 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&quo ...
- js作用域问题
<script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined ...
- JS面相对象
一.理解对象: //第一种:基于Object对象 var person = new Object(); person.name = 'My Name'; person.age = ; person.g ...
- Js作用域链及变量作用域
要理解变量的作用域范围就得先理解作用域链 用var关键字声明一个变量时,就是为该变量所在的对象添加了一个属性. 作用域链:由于js的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是 ...
- js作用域链
js作用域链 <script> var up = 555; function display(){ var innerVar = 2; function inner(){ var inne ...
随机推荐
- nmap导出处理脚本
import sys log = open("result.gnmap","r") xls = open("output.csv",&quo ...
- Python学习笔记 - day11 - Python操作数据库
MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...
- python自动开发之第二十三天(Django)
一.一大波model操作 1. 创建数据库表 # 单表 # app01_user ==> tb1 # users class User(models.Model): name = models. ...
- HDU 5117 Fluorescent
题目链接:HDU-5117 题意为有n盏灯,m个开关,每个开关控制着\( k_{i} \)灯.X为最后亮着的灯的个数,要求出\( E(X^{3} ) * 2^{M} mod (10^9 + 7) \) ...
- 在Redis集群中使用pipeline批量插入
在Redis集群中使用pipeline批量插入 由于项目中需要使用批量插入功能, 所以在网上查找到了Redis 批量插入可以使用pipeline来高效的插入, 示例代码如下: Pipeline p = ...
- DataTable.DefaultView.Sort 排序方法
今天在整合一个东西,需要用到DataTable的一个排序方法, 前我是将DataTable存到DataView里面的,所以刚开始就使用了DataView.Sort="ColumnName A ...
- Restful Framework (二)
目录 一.认证 二.权限 三.限制访问频率 四.总结 一.认证(补充的一个点) 回到顶部 认证请求头 #!/usr/bin/env python # -*- coding:utf-8 -*- from ...
- redis之(九)redis的事务机制
[一]什么是redis的事务 --->redis的事务是一组命令的集合. --->redis的事务是保证一组命令,要么都执行,要么都不执行.但不支持一组命令中,其中一个或多个执行失败,不支 ...
- 【转载】python 特殊函数 dunder function
python的特殊方法:另外一种称谓是 dunder function, 就是 under-under function的简写,就是指那些前后都带双下划线的函数. 转自这里: https://blog ...
- linux在命令执行过程中ctrl +z 后[1]+ Stopped
进程挂起 stopped 代表有进程挂起 [1]是id号 可以通过Linux命令:jobs 查看挂起进程 fg 1 把任务1放到前台 bg 1 把任务1放到后台