查漏补缺一波,串一串我的知识体系

68 阅读2分钟
  1. object.keys和for in区别,for in 会继续往原型上遍历,所以给构造函数的原型写方法时,由它创建的实例对象也能访问到
  2. 函数都可以拿来new,尽管它并不想被new
  3. this指向是在调用时确定的,一般来说,谁调用这个函数,谁就是这个this,而bind,call,apply用来改变this,使得某个对象可以借用这个方法,如object.protoType.toString.call(obj)来判断obj的类型
  4. constructor构造器,是一个默认的属性,由于protoType可能被修改,所以并不表示是由它构造的
  5. definePorperty可以设置属性的可读,可编写,可枚举,可配置,另外传第三个参数handler可以进行对象劫持,但和proxy对比它不能检测到数组添加的属性,修改了某个元素,修改了长度length,对象添加了属性,除非你继续劫持,还有新添加了对象,也要处理嵌套
  6. new和Object.create()的区别,__proto__和protoType区别Object.create(XXX) 和 new XXX()创建函数的区别 - seeBetter - 博客园 (cnblogs.com)
  7. protoType是函数才有的,proto是对象的,而定义普通的对象的时候,就会生成一个__proto__,这个__proto__指向的是这个对象的构造函数的prototype.
  8. exports 等于 module.exports,相当于在js文件头部,有一个module对象,module.exports =exports;*exports是一个对象,所以可以exports多个值
  9. *exports 是指向的 module.exports 的引用require() 返回的是 module.exports 而不是 exports
  10. 1:每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象; 2:每一个模块内声明的变量都是局部变量, 不会污染全局作用域; 3:模块内部的变量或者函数可以通过export导出; 4:一个模块可以导入别的模块
  11. 两种模块不能混用require和import的区别 - 知乎 (zhihu.com)
  12. loadMore组件实际上是根据hasMore来变化文本值,函数getLoadMore用来获取该组件节点,然后调用该组件内部的方法;当发送的请求得到的数据长度小于pageSize,hasMore会变成false,然后改变节点文本为‘没有更多了’,当请求到新的数据时,长度大于等于pageSize就true,显示数据加载中,然后延迟半秒就被新数据顶下去就看不到了