javascript是一门基于浏览器的弱类型脚本语言,是一种面向对象的交互型语言, dom是js脚本的接口。js通过bom来控制浏览器,浏览器是先通过各自的bom,再通过dom来加载网页。 javascript通过dom中子元素节点来操纵网页元素,同时通过绑定元素 原型链
1.Object.prototype.a='xxxx'
2.Object.prototype.b=function(){console.log('1111111111)}
console.log(f.a)//xxx
console.log(f.b)//11111111111
这个就将a共享了 闭包: advantage:使外部的可以访问局部的变量、参数以及声明的其他内部函数 disadvantage:容易使内存泄露 递归: 内部函数向父函数发起调用 从下往上递归,最后需要一个判断条件让它跳出递归,否则会出现无限递归,栈溢出
isNaN:除了判断NaN为true,还会把不能转成数字的判断为true,例如'xxx'
- Number.isNaN:只有判断NaN时为true,其余情况都为false 装箱和拆箱 装箱:创建一个string变量const tepm =new String('wsdhgtr') ,const index = a.indexOf('字符'),销毁,tepm=null,console.log(index) 拆箱:使用valueOf(偏向于数字)和toString(偏向于字符串)拆箱操作 谈null和 undefined:1.未初始化和未定义 2.null==undefined、true、、null===undefined、false3.都能被使用 为什么typeof null 是object?
不同的数据类型在底层都是通过二进制表示的,二进制前三位为000则会被判断为object类型,而null底层的二进制全都是0,那前三位肯定也是000,所以被判断为object
null作为空对象,其二进制表示全为0,而object只需判断前三位是否为0,true,则可判断为object
JavaScript的隐式转换规则
-
1、转成string类型: +(字符串连接符)
-
3、转成boolean类型:!(逻辑非运算符)
0.1 + 0.6 === 0.7?//false js计算中存在精度丢失问题,,小数为浮点型,需要进行二进制运算,有些小数不能用二进制表示,而取了近似值,计算有关雄小数问题可以先转换为整数
-
解决方法:
- 先变成整数运算,然后再变回小数
- toFixed() 性能不好,不推荐
冒泡: 微软提出了名为事件冒泡(event bubbling)的事件流。事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。 事件委托:正要执行的事件在重复操作时,在一个元素上绑定事件,其他的通过绑定来实现相应的效果,比如说微博评论 var text = document.querySelector("textarea"); var btn1 = document.querySelector(".btn1"); var btn2 = document.querySelector(".btn2"); var ul = document.querySelector("ul");
btn1.onclick = function () { if (text.value == "") { alert("亲,你还没输入呢~~"); return false; } else { var li = document.createElement("li"); li.innerText = text.value; ul.insertBefore(li, ul.children[0]); text.value = ""; } }; btn2.onclick = function () { ul.removeChild(ul.children[0]); };