js中的定义
执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的 变量对象:环境中定义的所有变量和函数都保存在这个对象中。(在函数中这个变量对象叫活动对象)
作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链,作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链本质上是一个指向变量对象的指针列表,他只引用但不实际包含变量对象。
闭包中所保存的是整个变量对象而不是某个特殊的变量
闭包是指有权访问另一个函数作用域中的变量的函数。
this对象是在运行时基于函数的执行环境绑定的,在全局环境中this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象,匿名函数的执行环境具有全局性,因此其this对象通常指向window.
function hehe(){
return funciton(){
return "name";
}
}
document的DOMContentLoaded事件会在形成完整的dom树之后触发,不理会图像,js文件,css文件或其他资源是否已经下载完毕,也就意味着用户能够尽早的与页面交互。这个事件始终都会在load事件之前触发
在ajax应用中开发人员经常要利用url参数列表来保存状态或导航信息;
在js中添加到页面上的事件处理程序的数量将直接关系到页面的整体运行性能,导致这一问题的原因是多方面的,首先每个函数都是对象,都会占用内存,内存中对象越多性能就越差,其次,必须事件指定所有事件处理程序而导致的dom访问次数,会延迟整个页面的交互就绪事件,
使用事件委托,只需要在dom树中尽量最高的层次上添加一个事件处理程序.多数鼠标事件和键盘事件都适合采用事件委托技术.
在不需要的时候移除时间处理程序.
在事件处理程序中删除按钮也能组织事件冒泡,目标元素在文档中是事件冒泡的前提.
以前面试的时候有人让我理解一下dom是什么?
DOM 文档对象模型,是针对hmtl和xml文档的一个api,dom描绘了一个层次化的节点数,允许开发人员添加,移除和修改页面的某一部分.
大多数情况下都将事件处理程序添加事件流的冒泡阶段,要保证处理事件的代码能在大多数浏览器下一致的运行,只需要关注冒泡阶段
事件对象:在出发dom上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与时间有关的信息,包括导致事件的元素,事件的类型以及其他与特定时间相关的信息.
新图像元素不一定要从添加到文档后才开始下载只要设置了src属性就会开始下载;
mouseenter:当鼠标光标从元素外部首次移动到元素范围之内时触发;这个事件不冒泡,而且在光标移动到后代元素上不会触发
mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发,----同上---
js中的定义的更多相关文章
- JS中函数定义和使用顺序
在js中如果定义函数是先声明函数,如: console.log(hello); //然后再去定义: function hello(){ alert("Hello");} 这种是可以 ...
- js中的定义变量之①用不用var
var 是js定义变量的意思. 由于js中的变量是弱类型的,因此js中的所有变量包括number(数字型).string(字符串类型).boolean(布尔类型,true和false)等均通过var关 ...
- [转载]JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- JS中如何定义全局变量
三种方法 1.在js的function外定义一个变量 var name='测试'; function XX(){ alert(name); } 2.不使用var,直接给定义变量,隐式的声 ...
- Angular JS中变量定义的基本原则
在Angular JS开发中,经常需要定义一些变量,关于这些变量的定义方法及作用域应该注意以下几点: 1. 如果能用局部变量解决问题,尽量不要用全局变量. 2. 需要与界面双向绑定的变量采用$scop ...
- 1.1 js中函数定义解析(学习笔记)
1.1.1函数的分类 函数声明式 :使用function声明函数,并指定函数名. 函数表达式:使用function声明函数,但未指定函数名. 函数表达式2.匿名函数,匿名函数有很多作用,赋予一个变量则 ...
- JS中函数定义和函数表达式的区别
摘要: (function() {})();和(function(){}());的区别 Javascript中有2个语法都与function关键字有关,分别是: 函数定义:function Funct ...
- js 中const 定义的值是否能更改
const定义的基本类型不能改变,但是定义的对象是可以通过修改对象属性等方法来改变的. 1. const aa=trueaa=falseconsole.log(aa)VM1089:2 Uncaught ...
- 简单说明一下JS中的函数声明存在的“先使用,后定义”
首先看一段JS代码,其中使用了两种方式声明了两个函数,分别在不同的地方调用两个函数: <script> 'use strict'; // 输出hello函数 console.log(hel ...
随机推荐
- [AS3]as3画笔实例实现橡皮擦功能源代码
[AS3]as3画笔实例实现橡皮擦功能源代码 //主容器 var main:Sprite = new Sprite(); main.mouseEnabled = false; addChild(mai ...
- webSocket详解
WebSocket 实战http://www.ibm.com/developerworks/cn/java/j-lo-WebSocket/index.html 转自IBMdeveloperWorks ...
- 使用hex6x 进行十六进制转换
接触DSP两年多,虽然烧写Flash的操作都没问题,但是要是问起来为什么这么做的,就有点自惭形秽了.所以花些时间,查阅一下资料,整理一下. 1.先看看BurnFlash都需要什么东西. XXX.out ...
- 使用Nginx镜像代理.NET Core MVC
1.获取microsoft/dotnet镜像 docker pull registry.cn-hangzhou.aliyuncs.com/cjx/tutorial 如果有问题确认已经使用阿里云镜像加速 ...
- oracle合并版本
1) 添加字段,并自增 第一步:alter table TOWN add ID int 第二步:Update TOWN set id=rownum; Commit; 2) 更新表(另一张表) ...
- Win32 RGB三原色
以前看到三原色的图案,一直很好奇是如何画出来.后来终于搞清楚了,其实很简单,实际上就是RGB三个分量的"位与"运算. 下面给出Win32绘制三原色图案的例子,特此记录在此: #in ...
- 9×9扫雷游戏代码-C写的
#include <stdio.h> #include <stdlib.h> //画棋盘 a雷表 b周围雷数表 c打开表 ][],][],][]) { ,j=; ;i<; ...
- Android根据文件路径加载指定文件
Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表. 如图: 代码: public class Util { /**** * 计算文件 ...
- sqlite的简介
第一步: 第二步,建立桥接文件 随便创建一个类,语言选择oc,然后它会问你是否创建桥接模式,然后你选择是就可以了 那个类可以删除了 在那份桥接文件中加入一句话#import <sqlite3.h ...
- POJ 2528 Mayor's posters (线段树)
题目链接:http://poj.org/problem?id=2528 题目大意:有一个很上的面板, 往上面贴海报, 问最后最多有多少个海报没有被完全覆盖 解题思路:将贴海报倒着想, 对于每一张海报只 ...