-
内置对象:
三种包装对象:string、number、boolean
2.其他的内置对象
Array
Function
Data
Math
查看全部 -
代码
算法
查看全部 -
运算符的优先级:尽量使用()
js舍入误差 运算时会将数据转化为二进制进行运算,输出时又会转化为十进制,在存储过程中会丢弃一些位数,因为会多出数字(4)
方案1:数据量比较小
console.log(parseFloat((0.1+0.2).toFixed(2))) //0.3 toFixed()把数字转换为字符串,结果的小数点后有指定位数的数字
方案2:数据量大,不能舍弃
幂次方的增加 Math.pow(a,b) 为底数 b为指数
查看全部 -
1.
2.console.log(0||5)//放回5,在||条件下,因为0为false,所以选择为true的5进行返回
3.console.log(0&&5)//0
4.null:typeof检测是对象
5.==(值相同
===(值与类型都要相同,开发时尽量使用===
查看全部 -
深拷贝:
//方法一:循环遍历
function deepClone(tartgetObj, endObj) {
var obj = endObj || {}
for (var key in targetObj) {
if(typeof targetObj[key] === 'object') {
obj[key] = tartgetObj.construtor === Array ? [] : Object.create(null)(方法二:{})
deepClone(tartgetObj[key], obj[key])
} else {
obj[key] = targetObj[key]
}
}
return obj
}//方法二
最简单的方法最新的方法,用ES6的扩展运算符(…)进行赋值,这个应该会在以后被广泛应用,这个方法也完美解决了JSON.stringify+JSON.parse不能实现的对函数方法深拷贝:
let obj1 = { name: 'Jay', age: '22',fun:function() {console.log(1)} }
let obj2 = { ...obj1 };
obj2.name = 'xxx'
console.log(obj1.name, obj2.name, obj2)
//输出结果为(jay xxx {name: "xxx", age: "22", fun: ƒ})
//方法三
var copyObj = JSON.parse(JSON.stringify(targetObj)) //object->string->object
查看全部 -
浅拷贝:遍历 create
for...in 语句用于对数组或者对象的属性进行循环操作。
for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
查看全部 -
栈:计算机为原始类型开辟的一块内存空间 string number...
堆:计算机为引用类型开辟的一块内存空间 object
堆会栈中存一个地址值
查看全部 -
instanceof检测返回Boolean值 true false =>A instanceof B(A对象是否由B对象实例化出来的)
instanceof是按原型链进行查找的
//可以检测数据类型
object.prototype.tostring.call('1')//string
3.
查看全部 -
1.typeof检测,返回的是对应的数据类型。
2.typeof(null)//object--计算机 typeof返回的数据类型是根据机器码的后三位进行判断的 000=》object null=》0000000...000
3.通过new new一个构造函数 实例化一个对象
4.
‘MOOC’以字符串的形式 进行拆分 key:value 索引值为0 1 2 3
查看全部 -
async与defer区别,async哪个下载完先执行哪个。defer按照加载顺序执行查看全部
-
回流相当于刷新页面,重绘是部分更新,不涉及位置变化。回流会引起重绘,重绘不会回流查看全部
-
类型转换
查看全部 -
原型和原型链
查看全部 -
this用法
改变this指向
查看全部 -
new 的执行过程
查看全部
举报