js事件委托如何理解

1、每个函数都是对象,占用内存。内存中的对象越多,性能越差。解决事件处理过多问题的办法是事件委托。 2、事件委托冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 实例 <ul id="myLinks">     <li id="myLi1">text1</l

js中hasOwnProperty的属性用法

1、js不会保护hasOwnProperty被非法占用,如果一个对象碰巧存在这个属性, 就需要使用外部的hasOwnProperty 函数来获取正确的结果。 2、当检查对象上某个属性是否存在时,hasOwnProperty 是唯一可用的方法。 实例 var foo = {     hasOwnProperty: fun

js中变量对象如何理解

1、变量对象是与执行上下文相关的数据作用域。它是一个与上下文相关的特殊对象,它存储了上下文中定义的变量和函数声明。 2、变量对象是一个抽象概念。不同的上下文类型在物理上使用不同的对象。 实例 var foo = 10;   function bar() {} // function declaration,&

js对象的读取速度

1、访问字面量和局部变量最快,而访问数组元素和对象成员相对较慢。访问对象成员时,就像作用域链一样,在原型链上搜索。 2、如果找到的成员在原型链中的位置太深,访问速度就会变慢。 所以要尽量减少对象成员的搜索次数和嵌套深度。 实例  // 进行两次对象成员查找   function hasEitherClass(element, classN

js中co模块的介绍

1、co模块可以帮助我们完成异步流程的自动执行。基于Promise对象的co模块。co模块的源代码也很简单,更适合阅读。 2、co方法接受生成器函数作为唯一参数,并返回Promise对象。 实例 const promise = co(function* () {   return yield Promise.

js中可选的回调函数

1、then的回调函数不是严格要求必写的。如果不写,promise也会用上一个返回的最终值来传递。 doSomething().then().then(function(result) {   console.log('got a result', result); });   // 输出结果是: //

js中Promise的状态探究

1、promise可以处于等待被赋值的等待态(pending),可以给出值并转换为解决态(resolved)。 2、一旦promise被一个值resolve丢失,它将始终保持这个值不再被resolve丢失。 实例 function Promise(fn) {   var state = 'pending'; &n

js如何创建执行上下文

1、创建一个执行分为两个阶段:创建阶段和执行阶段。 2、创建阶段会发生三件事:绑定this指向,也被称为 This Binding、创建词法环境组件、创建变量环境组件。 实例 ExecutionContext = {       ThisBinding = <this value&g

Js如何存储执行上下文

1、执行上下文存在于数据栈中。该栈保存代码运行是创建的所有上下文。 栈的特点是后进先出,每创建一个新的上下文,就会压入栈的顶部。当函数执行完成时,上下文从栈中弹出,控制过程到达栈中的下一个上下文。 2、当js引擎第一次触摸脚本时,它将创建一个全局的上下文,并将其压入栈中。 实例 // 创建全局上下文,入上下文执行栈 var name = 'globa

js执行上下文的类型

1、全局上下文:是基础,默认上下文类型,任何不在函数内的代码都在全局上下文中。 它会执行两件事:创建一个全局window对象,设置this的值等于这个对象,一个程序只有一个全局上下文环境。 2、函数上下文:每当调用一个函数,就会为这个函数创建一个新的上下文。 每个函数都有自己的上下文,函数上下文可以任意多个。 3、eval函数执行上下文:执行在eval函数内部的函数也有自己的函数上下文。 实例 v

js中异步是什么意思

1、如果调用者在函数返回时无法获得预期的结果,但在未来需要通过一定的手段获得,那么函数是异步的。 2、如果函数异步,调用后立即返回,但不会立即返回预期结果。 调用者不必主动等待,当调用者得到结果时,会通过回调函数主动通知调用者。 实例 //读取文件 fs.readFile('hello.txt', 'utf8', function(err,&nb

js中同步如何理解

1、如果调用者在函数返回时能够获得预期结果(即获得预期返回值或看到预期效果),则该函数同步。 2、如果函数同步,即使调用函数执行的任务耗时,也会等到得到预期的结果。 实例 //在函数返回时,获得了预期值,即2的平方根 Math.sqrt(2); //在函数返回时,获得了预期的效果,即在控制台上打印了'hello' console.log('hello'); 以上就是

js中Array.from的用法

1、Array.from可以从类似的数组或可迭代对象中创建一个新的、浅拷贝的数组实例。 2、Array.from接收三个参数:必须选择类似数组的对象、加工函数、this作用域。 实例 var obj = {0: 'a', 1: 'b', 2:'c', length:&nb

js中Array.of的使用

1、Array.of用于将参数依次转换成数组中的一个,然后返回这个新的数组,无论这个参数是数字还是其他。 2、当参数是一个并且是正整数时,Array.of将参数转换为数组中的一个。 而构造器将生成长度与第一个参数相同的空数组。 当参数为两个时,返回的结果是一致的。 实例 Array.of(8)     //  Array(8)&nb

js中Array构造器的处理方式

1、newArray(arg1,arg2,…),当参数长度为0或大于等于2时,传入的参数将依次成为新数组的第0至第N项。 当参数长度为0时,返回空数组。 2、newArray(len),当len不是数值时,返回一个只包含len元素的数组。 当len为数值时,len不能超过32位无符号整形,即需要小于2的32次方(len为Math.pow(2,32)),否则将抛出Rangeerror。 实例 //&

js逻辑操作符的介绍

1、逻辑操作符与,由两个‘&’字符组成(&&),只有当两个操作数都是true时,它才会是true。 if(num>=5&&num<=10){ alert("the number") } 2、逻辑操作符或,由两个垂直线字符构成(||)。 只要其操作数之一是true,逻辑或操作就是true。 if(num>=5||

js对象模式如何理解

1、匹配对象。如果有省略号,对象可以有更多的属性。 2、只检测自己的属性(Object.keys),忽略原型中的属性。对象语法支持特殊识别属性,快速属性,属性不支持尾逗号。 实例 test("value object", () => {     let input =&nb

js数组模式是什么

1、匹配一个数组。根据数组元素的长度,数组匹配可分为严格的长度匹配和最短的长度匹配。 2、如果有省略号,可以匹配任何更多的数组元素。数组语法不支持洞(连续逗号)和尾逗号。不支持迭代器。 实例 test("value array", () => {     let y =&n

js标识符模式的介绍

1、是一个合法的JavaScript标识符,除了标识符不包括$字符,但不能是类型名称。 2、模式中的标识符和类型名称区分大小写,与js语法一致。标识符模式总是成功匹配任何值。 通配模式虽然是标识符,但实际上是弃元(discard),弃元表示完全不能使用的值。仅用于占位。同名不会引起名称冲突。 实例 test("value ID", () =>