前端面试

javascript面向对象是什么?面向对象是一种思维模式,是相对于面向过程来说的。面向过程也叫函数式编程,在你解决一个问题的时候,定义好你的函数,然后在函数体里面写你的逻辑即可,只要里面的逻辑没有出现错误,最后传入参数调用即可得到想要的结果。而面向对象就是在你遇到一个问题时,你能想到这类问题所具有的共性,然后把这些共性单独拿出来形成一个对象,对象中的属性对应于这类问题的公共属性,所以这个...
摘要由CSDN通过智能技术生成

1. javascript面向对象是什么?

面向对象是一种思维模式,是相对于面向过程来说的。
面向过程也叫函数式编程,在你解决一个问题的时候,定义好你的函数,然后在函数体里面写你的逻辑即可,只要里面的逻辑没有出现错误,最后传入参数调用即可得到想要的结果。
而面向对象就是在你遇到一个问题时,你能想到这类问题所具有的共性,然后把这些共性单独拿出来形成一个对象,对象中的属性对应于这类问题的公共属性,所以这个对象也可以看做是与现实中相对应的一个具体事物。比如一辆车,这辆车就可以用JS来模拟成一个对象,他有品牌、型号、门数等,这些都可以看做是对象中的公共属性。而车的价格、行驶速度等每辆都是不相同的,这些可以看做是事物的私有属性。所以面向对象更倾向于区分事物的共有属性和私有属性。
这样便可以通过公共属性进行扩展,提高代码的可读性、可维护性、复用性。
面向对象有三个特点:
(1)封装:将客观事物封装成一个抽象的对象(类),在这个类中有这个事物的属性和方法。封装的目的是将信息隐藏,隐藏内部的实现细节,只保留一个接口对外通信。封装的优势在于,无论一个对象内部的代码经过了多少次修改,只要不改变接口,就不会影响到使用这个对象时编写的代码
(2)继承:面向对象将事物的共有属性和私有属性分开。对于一个具体的实例,要想具有这些公有属性,就必须要继承这个对象(类)。利用继承,一方面可以在保持接口兼容的前提下对功能进行扩展,另一方面增强了代码的复用性,为程序的修改和补充提供便利。
(3)多态:同一操作用在不同对象上,可以产生不同的解释和不同的执行结果。这样解释比较难以理解,我们直接上代码:

2.浏览器解析HTML的过程

当你再浏览器中输入一个网址,按下回车后发生:
(1)https://blog.csdn.net/didudidudu/article/details/80181505
(2)浏览器解析html:
采用从上到下的方式来解析。
首先解析HTML的header部分,此时控制权属于浏览器的渲染引擎。header中可能会有script标签,遇到这个标签,浏览器暂停解析,将控制权交给JS引擎。如果script是引用外部资源,则是先下载再解析JS代码,如果引用了多个,会同时下载,但是解析的时候按顺序解析;如果在script中写了一段JS代码,那么浏览器开始解析这段代码,所以可能会报错(JS中操作DOM节点,此时DPM并未加载,所以报错)。执行完毕后又交给渲染引擎。
如果遇到Link标签,开始下载CSS文件,同时向下解析。
(JS的下载或解析会使浏览器停止形成DOM tree,但是CSS的下载不会影响DOM tree的形成,只会影响CSS tree的形成,从而影响render tree的形成)
解析完header部分,开始解析body部分,形成DOM tree。由于CSS文件的解析和DOM的解析在不同的线程中,是并行的,所以当DOM解析完形成DOM tree并且CSS也解析完形成CSS tree,两者合并成render tree。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值