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作用域对象与运用技巧的更多相关文章

  1. js对对象的校验技巧,随时更新

    js中,字符串长度用length. 若不确定一个Map里,是否存在某个对象,则用underfind 去校验

  2. js 操作对象的小技巧

    来源:https://www.w3cplus.com/javascript/javascript-tips.html 1.使用...运算符合并对象或数组中的对象 同样使用ES的...运算符可以替代人工 ...

  3. js作用域及对象以及一些常用技巧

    回顾 流程控制(语句) 分支 if () {    }​if () {    } else {    }​if () {    } else if () {    } else if () {     ...

  4. JavaScript函数作用域与对象以及实用技巧

    1. JS作用域 1.1 全局作用域和局部作用域 函数外面声明的就是 全局作用域 函数内是局部作用域 全局变量可以直接在函数内修改和使用 变量,使用var是声明,没有var是使用变量. 如果在函数内使 ...

  5. Angular JS - 4 - Angular JS 作用域与控制器对象

    1. 控制器对象使用 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&quo ...

  6. js作用域问题

    <script type="text/javascript"> alert(i);//Uncaught ReferenceError: i is not defined ...

  7. JS面相对象

    一.理解对象: //第一种:基于Object对象 var person = new Object(); person.name = 'My Name'; person.age = ; person.g ...

  8. Js作用域链及变量作用域

    要理解变量的作用域范围就得先理解作用域链 用var关键字声明一个变量时,就是为该变量所在的对象添加了一个属性. 作用域链:由于js的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是 ...

  9. js作用域链

    js作用域链 <script> var up = 555; function display(){ var innerVar = 2; function inner(){ var inne ...

随机推荐

  1. PKUWC 2019 自闭记

    PKUWC 2019 自闭记 Day -1 考前天天在隔壁的物竞教室划水(雀魂,能和吉老师一起玩的游戏都是好游戏),没有做题. Day 0 早上8:16的高铁,到广州南居然要6个小时...不知道福州和 ...

  2. 【Windows使用笔记】Windows科研软件

    1 Anaconda Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.主要是内置有jupyter notebook和jupyter ...

  3. monkey测试===easyMonkey测试【推荐】

    easymonkey测试: easymonkey是基于monkey测试的一个二次开发工具.(关于monkey测试参见之前blog) easymonkey的特点就是方便,解决了很多参数命令上设置的麻烦, ...

  4. 64_l1

    L-function-1.23-18.fc26.i686.rpm 13-Feb-2017 23:19 154562 L-function-1.23-18.fc26.x86_64.rpm 13-Feb- ...

  5. python笔记_查看函数调用栈的一个小技巧

    一.背景 最近在看一个开源框架的源码,涉及到的内容非常杂乱,有的函数不知道是在什么时候被谁给调用了?调用的时候传入了什么参数?为了解决这个问题,写了一个小的装饰器. 二.实现 这个装饰器函数主要参考了 ...

  6. maven使用备忘

    maven的所有功能本质上都是通过插件来实现的所有的功能.archetype插件就是根据项目类型创建项目的插件.执行archetype:generate命令就会list一系列的项目类型,可以选择一个合 ...

  7. PHP设计模式二-------单例模式

    1.单例模式的介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点: 主要解决:一个全局使用的类频繁地创建与销毁. 关键代码:构造函数是私有的,克隆方法也是私有的. 1.1 懒汉式//1 ...

  8. Activiti如何替换已部署流程图

    首先交代下背景:我们有一个已经上线的activiti工作流系统,对于流程图的操作已经封装好部署,查看,删除的接口.此时客户提出要修改个别流程图里的节点名称. 我的第一个想法就是本地修改流程图bpmn文 ...

  9. mac下安装golang

    1.安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/in ...

  10. hdu 1044(bfs+dfs+剪枝)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...