当前位置: 首页 > Web前端 > HTML

JavaScript高级程序设计(第三版)笔记

时间:2023-04-03 01:04:30 HTML

tip:本文包含部分Es6语法的自动转换数据类型1.if(a)值转换为true值转换为falseBooleantruefalseString任意非空string""(空字符串)Number任意非零数值(包括无穷大)0和NaNObject任意对象nullUndefinedn/aundefined(①n/a(orN/A),是notapplicable的缩写,意思是“不适用”。)以上是使用Boolean()转换函数方法时的返回值。用if(a)判断时,先执行boolean(a),再判断if为真或假。2.遍历数组(Array)遍历数组自带forEach、filter、map等方法进行遍历。不同之处在于map方法可能会返回undefined。b.对象(Object)遍历(1)for..invarobj={snow:1,bran:2,king:3,nightking:4};for(letiinobj){console.log(i+','+obj[i])}(2)Object.keys(obj)Object.keys返回一个数组,包括对象本身(不包括继承的)的所有可枚举属性(不包括Symbol属性)的键名。varobj={'a':'北京','b':'海淀'};console.log(Object.keys(obj));//['a','b']提示:遍历对象时补充hasOwnProperty时可以使用的方法:(判断对象是否包含某个属性)forin(通常与hasOwnProperty一起使用)遍历原型上的可枚举项chain,for(letkeyinobj){if(obj.hasOwnProperty(key)){console.log('key:'+key+','+'value:'+obj[key])}}delete:(删除对象的一个??属性)for(varkeyinstudent){deletestudent[key];}其他遍历对象的方法:https://blog.csdn.net/qq_3668...3.DOM扩展1.HTMLDOMquerySelector()方法querySelector只能选择第一个匹配的节点;此方法类似于JQ:获取标签:document.querySelector("body")获取ID:document.querySelector("#myDiv")获取类:document.querySelector(".myDiv")获取子元素:document.querySelector("img.myDiv")2.HTMLDOMquerySelectorAll()方法querySelectorAll可以选取多个节点,以“,”分隔,返回一个数组;//获取文档中的所有

元素varx=document.querySelectorAll("p");//设置第一个

元素的背景色x[0].style.backgroundColor="red";4.DOM关于HTML5扩展1.HTMLDOMgetElementsByClassName()方法该方法返回一个数组varx=document。getElementsByClassName("示例颜色");x[0].style.backgroundColor="红色";2.从DOM添加类的HTMLDOMclassList属性方法:document.getElementById('test1').setAttribute('class','class1')新方法:document.getElementById("myDIV").classList.add("mystyle");将类添加到

元素:document.getElementById("myDIV").classList.add("mystyle");向
元素添加多个类:document.getElementById("myDIV").classList.add("mystyle","anotherClass","thirdClass");从
元素中删除一个类:document.getElementById("myDIV").classList.remove("mystyle");删除
元素的多个类:document.getElementById("myDIV").classList.remove("mystyle","anotherClass","thirdClass");5。短路操作||短路操作仅在前者不成立时执行后者原则:||首先计算第一个操作数,如果可以转换为真,则返回左边表达式的值,否则计算第二个操作数即使||的操作数运算符不是布尔值,它仍然可以看作是布尔或运算,因为无论它返回什么类型的值,它都可以转换为布尔值leta=0;leturl=a||'';//url是''letb=1leturl1=b||'';//url1is1&&短路运算只在前者为真时采用后一种原则:&&,先计算如果第一个表达式为假,则不处理第二个表达式;否则,将继续处理后续表达式。从左到右选择表达式第一个非真表达式的值,没有找到则返回最后一个表达式的值。leta=1;leturl=a&&'';//urlis''letb=0leturl1=b&&''//url1is0>两种短路操作有一个共同的特点:如果第一个操作数可以确定结果,则不会评估第二个操作数