####DOM操作
- 1)创建新节点
- createDocumentFragment() //创建dom片段
- createElement() //创建元素
- createTextNode() //创建文本节点
- 2) 添加 / 移除 /替换/插入
- appendChild()
- removeChild()
- replaceChild()
- insertBefore()
- 3) 查询元素
- getElementsByTagName()
- getElementById()
- getElementByName()
###js数据类型
基本数据类型:number、string、null、undefined、boolean、symbol -- 栈
- 原始数据类型是直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据;
引用数据类型:object、array、function -- 堆
- 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;
###js内置对象
- 数据封装类对象:Object、String、Number、Boolean、Array
- 其他对象:Function、Data、Math、Arguments、RegExp、Error
- ES6新增对象:Promise、Proxy、Map、Set、Symbol、Reflect
###eval
- 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
而且非常耗能(执行两次,一次解析成JS代码,一次执行)
<!-- <script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script> -->
###对闭包的理解
链接见 https://www.cnblogs.com/cxying93/p/6103375.html
- 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数里创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用域链,将函数内部的变量和方法传递到外部
函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。注意点:在函数内部声明变量的时候,一定要使用var命令这就是Javascript语言特有的"链式作用域"结构(chain scope),在下面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。下面代码中的f2函数,就是闭包;
闭包的用途:
一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在f1调用后被自动清除。
<!-- function f1(){
var n=999;
function f2(){
alert(n); // 999
}
} -->
###http状态码
https://blog.csdn.net/sinat_17775997/article/details/82111432
###介绍JavaScript的原型、原型链?有啥特点
原型:
JavaScript的所有对象中都包含了一个 (__proto__ ) 内部属性,这个属性所对应的就是该对象的原型
JavaScript的函数对象,除了原型 (__proto__) 之外,还预置了 prototype 属性
当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型( __proto__)。
原型链:
当一个对象调用的属性/方法自身不存在时,就会去自己(__proto__ )关联的前辈 prototype 对象上去找
如果没找到,就会去该 prototype 原型 ( __proto__) 关联的前辈 prototype 去找。依次类推,直到找到属性/方法或 undefined 为止。从而形成了所谓的“原型链”
原型特点:
JavaScript对象是通过引用来传递的,当修改原型时,与之相关的对象也会继承这一改变
###JavaScript如何实现继承
- 构造函数绑定:使用 call 或 apply 方法,将父对象的构造函数绑定在子对象上
- es6使用extends来继承
###在一个DOM上同时绑定两个点击事件:一个用捕获,一个用冒泡。事件会执行几次,先执行冒泡还是捕获
- 该DOM上的事件如果被触发,会执行两次(执行次数等于绑定次数)
- 如果该DOM是目标元素,则按事件绑定顺序执行,不区分冒泡/捕获
- 如果该DOM是处于事件流中的非目标元素,则先执行捕获,后执行冒泡
###事件的代理/委托
- 事件委托是指将事件绑定目标元素的到父元素上,利用冒泡机制触发该事件
优点:
可以减少事件注册,节省大量内存占用
可以将事件应用于动态添加的子元素上
缺点:
使用不当会造成事件在不应该触发时触发
###列举一下JavaScript数组和对象有哪些原生方法?
arr.concat/push/pop/unshift/shift/join/reverse/slice/splice/indexOf/includes
object.hasOwnProperty/valueOf/toString/toLocaleString
网友评论