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

知识点梳理

时间:2023-03-29 12:36:38 HTML

1.网络上http和https的区别什么是headerblocking,http2解决什么问题强缓存和协商缓存2.CSS3.JS基础js基本数据类型和复杂数据类型stringbooleanbigInt复杂数据类型:ObjectFunctionArraySetSymbolinstanceof可以判断基本数据类型吗?instanceof用于检测构造函数的原型属性是否出现在实例对象的原型链上。所以无法判断基本数据类型。手写instanceofffunctionmyInstance(left,right){letproto=left.__proto__;让原型=right.prototype;while(proto){if(proto===prototype){返回真;}else{proto=proto.__proto__;}}returnfalse;}显式原型(prototype),隐式原型(__proto__),原型链显示原型是函数上的一个对象实例,隐式原型是每个对象实例上的一个属性,指向构造函数的显示原型(prototype).js可以通过原型链函数实现继承_extends(subClass,superClass){subClass.prototype=Object.create(superClass.prototype);subClass.prototype.constructor=subClass;Object.setPrototypeOf(subClass,superClass);}functionsuperClass(){}functionsubClass(spec){让_this=superClass.call(this)||这;_this.spec=规格;返回_this;}_extends(subClass,superClass);写自定义变量类型判断函数functionmyType(o){lettType=Object.prototype.toString.call(o).slice(8,-1).toLowerCase();returntType;}'1'.toString()为什么可以调用lets=newObject('1');s.toString();s=null;0.1+0.2===0.3?为什么?不等于,因为计算机不能用二进制准确表示0.1,会是一个无限循环数,0.2类似;添加后也是一个无限循环的二进制数,但是js的Number精度有限,不能完全等于0.3。对于这种数学比较,可以用两端相减来比较一个非常小的数,比如Number.EPSILON。Polyfillif(Number.EPSILON===undefined){Number.EPSILON=Math.pow(2,-52);}什么是BigInt?为什么需要BigInt?BigInt是js中用来表示任意长度整数的基本数据类型。因为传统的Number类型是64位双精度浮点型,可以表示的数字范围是2^53-1到-(2^53-1),所以容易处理高-precision非常大或非常小的数字。会出现溢出问题。因此,bigInt类型被提出。在处理高精度时间戳和超长数字ID时,可以直接使用bigInt存储,而不是String存储。==、===和Object.的区别是==在比较两端变量的时候,如果两端的数据类型不同,会自动进行类型转换,转换之后再进行比较。转换规则为:1、如果两端是boolean、string、number中的任意两个,则先转换为number进行比较。2.null和undefined除了和自己相等之外,还相等。===同时判断数据类型和值,奇怪的是NaN===NaN返回false,-0===+0返回true。Object.is是ES6中定义的新方法,其性能与===基本相同,只是NaN===NaN会返回true,-0===+0会返回false。复杂类型转换为基本类型的过程会首先选择调用复杂类型的valueOf方法。如果方法返回的是基本数据类型,则使用返回值进行强制类型转换;如果不是,则使用toString方法的返回值进行强制类型转换;否则,将生成TypeError错误。输入二进制字符串,如:0101100;输出一个介于0和1之间的自字符串,它需要至少切换几次位置functionminSwitching(str){letstyle1={'0':0,'1':0},//010101...style2={'0':0,'1':0};//`101010...constlen=str.length;for(leti=0,j=0;i