2020-11-05

前端知识点记录(html js css es6等等 没有顺序不分先后 仅供个人笔记)

不定时跟新,欢迎指错!
1.读取对象中么有的属性,不会报错而是返回undefined
2.obj.123=789会报错 obj[“123”]=789 读取也要console.log(obj[“123”]);
3. 1|| 2 &&3 返回3
4.in 运算
5.hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
6.深拷贝就是开辟一块新的内存存放你新的变量,浅拷贝是指让你的新的对象的指针指向你旧对象的地址
7.sessionStorage关闭浏览器后就会删除 localStorage永久保留 储存在本地 /html5
8.JSON.parse -> json到string JSON.stringify -> string到json
9.不同对象就算值一样==还是false 因为地址不同
10.基本数据类型保存的是值,对象或者数组保存的是内存地址
11.实参数量小于形参,(a,b) 传入(123) 算a+b,返回NaN(not a number) 因为b是undefined a=123 加起来=NaN
12.函数不写return返回undefined
13.for(var nin obj){ console.log(obj[n]}可以获取obj所有对象的值
14.var会在最上面声明好,但是没有值 function最高

15.var a=123 ;
function fun(){
alert(a);
var a =456;
}
fun();
alert(a);
输出undefined 和 123

16.var a=123 ;
function fun(){
alert(a);
a =456;
}
fun();
alert(a);
输出123 和 456 注意有没有var 全局里没有就默认window但不会申明提前
17.class不存在变量提升 new了一个实例 实例的原型 proto
18.class a{
constructor(test){
this.name=test.name;
this.age=test.age;
this.say=test.say;
}
}
19.class a{
constructor(…test){
this.name=test.name;
this.age=test.age;
this.say=test.say;
}
} //…吧test当成一个变量传入变成了一个数组的0号元素
20.我们需要牢记两点:①__proto__和constructor属性是对象所独有的;② prototype属性是函数所独有的,
因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。
通过__proto__属性将对象连接起来的这条链路即我们所谓的原型链。
因为__proto__是一个内部属性,不是一个正式的对外的API,所以在操作原型对象时应该使用Object.getPrototypeOf()代替读取操作,使用Object.setPrototypeOf()代替设置操作。21. 对象就有.proto属性,指向object.prototype 方法就指向fuction.prototype 方法的.proto又指向object.prototype
每个函数独有prototype这个公共区域,所有由它而来的实例都可以访问到这个区域,这个区域也是一个对象,
指向object.prototype

22.bind返回一个新的函数,并且不会执行,需要手动执行,call和aplay一个传递所有参数一个传递数组,都是立刻执行。
23. 通过Object.create(null)创建出来的对象是一个干净对象,除自身属性之外,没有附加其他属性。{…}创建的对象,使用for in遍历对象的时候,会遍历原型链上的属性,带来性能上的损耗。使用Object.create(null)则不必再对其进行遍历了。
24.ES6中class不存在变量提升
25. 显式转换:转型函数 Boolean(),Number(),parseInt(),parseFloat(),.toString(), String(),
隐式转换:a,递增和递减操作符 b,一元加和减操作符 c,逻辑非操作符 与 比较操作符将任意值转换为布尔值 c,关系比较操作符
26. class A {}
class B extends A {}
const a = new A()
const b = new B()
a.proto ===
b.proto ===
B.proto ===
B.prototype.proto ===
b.proto.proto ===
在这里插入图片描述
在这里插入图片描述

  1. 不会阻塞dom解析的资源有:
    async属性 script标签之后的外联css image iframe

  2. defer和Async
    这个布尔属性被设定用来通知浏览器该脚本将在文档完成解析后,触发 DOMContentLoaded 事件前执行

  3. 宏任务,微任务,执行栈,执行队列
    执行栈就是顺序运行,碰到异步操作就放到执行队列
    • 执行一个宏任务(栈中没有就从事件队列中获取)
    • 执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
    • 宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)
    • 当前宏任务执行完毕,开始检查渲染,然后GUI线程接管渲染
    • 渲染完毕后,JS线程继续接管,开始下一个宏任务(从事件队列中获取)
    微任务包括:
    • Promise.then
    • Object.observe
    • MutaionObserver
    • process.nextTick(Node.js 环境)
    宏任务包括:
    • script(整体代码)
    • setTimeout
    • setInterval
    • I/O
    • UI交互事件
    • postMessage
    • MessageChannel
    • setImmediate(Node.js 环境)

30.关于闭包 闭包是指有权访问另一个函数作用域中的变量的函数
理清楚作用域链,

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. MVC特点:
    MVC模式的特点在于实现关注点分离,即应用程序中的数据模型与业务和展示逻辑解耦。在客户端web开发中,就是将模型(M-数据、操作数据)、视图(V-显示数据的HTML元素)之间实现代码分离,松散耦合,使之成为一个更容易开发、维护和测试的客户端应用程序。所有的通信都是单向的。
  2. View 传送指令到 Controller ;
  3. Controller 完成业务逻辑后,要求 Model 改变状态 ;
  4. Model 将新的数据发送到 View,用户得到反馈。
    MVVM
    MVVM是Model-View-ViewModel的简写。微软的WPF(Windows Presentation Foundation–微软推出的基于Windows 的用户界面框架)带来了新的技术体验, 使得软件UI层更加细节化、可定制化。与此同时,在技术层面,WPF也带来了 诸如Binding(绑定)、Dependency Property(依赖属性)、Routed Events(路由事件)、Command(命令)、DataTemplate(数据模板)、ControlTemplate(控制模板)等新特性。MVVM模式其实是MV模式与WPF结合的应用方式时发展演变过来的一种新型架构模式。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
    MVVM的设计思想:关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来

32.then和settimeout执行顺序,
即setTimeout(fn, 0)在下一轮“事件循环”开始时执行,Promise.then()在本轮“事件循环”结束时执行。因此then 函数先输出,settimeout后输出。先执行promise是宏任务队列,而setTimeout是微任务队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值