101、请简述prototype、__proto__ constructor三者的关系
 
1、prototype:
    每一个函数都有一个prototype这个属性,而这个属性指向一个对象,这个对象我们叫做原型对象
 
    作用:
        a、节约内存
 
        b、扩展属性和方法
 
        c、可以实现类之间的继承
 
2、__proto__
 
    1、每一个对象都有一个__proto__属性
 
    2、__proto__指向创建自己的那个构造函数的原型对象
 
    3、对象可以直接访问__proto__里面的属性和方法
 
 
 
3、constructor:
    指向创建自己的那个构造函数
 
 
总结:
    当我们创建一个构造函数的时候这个构造函数自带了一个prototype属性,而这个属性指向一个对象,也就是原型对象。
 
    这个原型对象里面有一个constructor构造器,它的作用是指向创建自己的构造函数。除此之外prototype还可以存放公共的属性和方法。
 
    当我们实例化一个对象的时候,这个对象自带了一个__proto__属性,这个__proto__指向创建自己的构造函数的原型对象。可以使用这个原型对象里面的属性和方法
 
102、请写出方法继承的方式
 
1、call 、apply:不建议使用浪费内存
 
2、原型对象继承
 
3、原型拷贝继承
 
4、原型链继承
 
5、混合继承
 
6、继承继承
 
7、ES6 class  super()
 
 
注意:以上方法用代码表示 不允许写文字
 
103、请说出call、apply、bind的区别
 
bind:bind绑定完this的指向后会返回一个新的函数体,不会被立即调用
 
call&apply:绑定完this的指向后会立即调用
 
call与apply的区别:
    call:第一个参数是this的指向,第二个以及后面的所有参数需要一个个进行传递
 
    apply:第一个参数是this的指向,第二个参数是一个数组
 
104、请解释一下什么叫同源策略,以及为什么浏览器会有同源策略
 
同源策略是浏览器的一个安全功能,不同源的客户端在没有授权的情况下,不能读取对方资源
    
为了保障数据的安全,即非同源网页不可请求
 
 
105、什么是闭包?用途?注意的地方?
 
1、闭包就是可以读取其他函数内部变量的函数
 
2、可以读取函数内部的局部变量 2、让这些变量始终保持在内存当中
 
3、由于闭包会使得函数中的变量都被保存在内存当中,内存会消耗很大,所以不能够滥用闭包,否则会造成网页性能的问题
 
106、设计模式(代码自己完善)
 
1、单例模式:
    保证程序中,使用该模式的类只有一个实例
 
    代码....
 
2、代理模式:
    
    代码....
 
3、观察者模式:
    某个人--->观察某件事件---》事情发生变化---》通知这个人---》去做某件事情
 
    代码....
 
107、什么是预加载&&懒加载
 
懒加载:
     当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。
 
实现原理:
    1、将图片地址放在元素的自定义属性中
 
    2、当页面加载完成后,根据scrollTop判断图片是否在用户的视野内,如果在就取出属性值放到src属性中
 
 
预加载:
    

原生js大总结十一的更多相关文章

  1. 原生js大总结九

    81.ES6的Symbol的作用是什么?   ES6引入了一种新的原始数据类型Symbol,表示独一无二的值   82.ES6中字符串和数组新增了那些方法   字符串       1.字符串模板    ...

  2. 原生js大总结十

    91.ajax的优点     a.提高运行效率   b.提高用户体验,让多件事情同时发生   c.在不刷新页面的情况下可以对局部数据进行加载和刷新       92.ajax请求的流程   1.创建通 ...

  3. 原生js大总结二

    011.if语句的优化   1.把次数多的条件和执行结果放到最前面   2.减少第一次无用的判断,可以用嵌套判断   3.判断语句禁止出现三次嵌套     012.谈谈你对switch的理解   1. ...

  4. 原生js大总结八

    071.如何组织事件冒泡   利用事件对象属性:stopPropagation 和 cancelBubble   stopPropagetion是一个方法:e.stopPropagetion();   ...

  5. 原生js大总结七

    061.如何获取父级节点.上一个子级节点.下一个子级节点    nextElementSibling  后一个兄弟元素  (如果没有是null)    previousElementSibling   ...

  6. 原生js大总结四

    031.数组常用的一些方法   1.push: 在数组最后添加一个或者多个元素,返回添加后数组的长度   2.pop: 从数组最后取出一个元素,返回的是数组的最后一个元素(取出的元素)   3.uns ...

  7. 原生js大总结五

    041.在js中如何用方法将10进制的字符转换成16进制和8进制   数字.toString(16) 数字.toString(8)     042.如何创建时间对象   new Date()   04 ...

  8. 原生js大总结三

    021.定义函数的几种方式   1.关键字函数:function fnName(){};   2.字面量函数:var fn = function(){};   3.构造函数:var fn = new ...

  9. 原生js大总结一

    001.浅谈堆和栈的理解?   js变量存储有栈存储和堆存储,基本数据类型的变量存储在栈中,引用数据类型的变量存储在堆中 引用类型数据的地址也存在栈中   当访问基础类型变量时,直接从栈中取值.当访问 ...

随机推荐

  1. 【Django】ORM操作#2

    目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...

  2. Linux运维管理的必备工具

    一.统一账号管理 1.LDAP 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows.Linux),Linux系统sudo集成,系统用户分组,主机登入限制等:可与Apache,HTTP ...

  3. ADB高级应用

    ADB高级应用 一.利用无线来查看adb shell > adb tcpip 5555 连接: > adb connect IP:5555 见后文<调试注意事项> 二.模拟按键 ...

  4. 迷茫了好一阵决定做WEB前端

    前两个学期事实上总是每一个学期给自己做一个计划.可是计划都付诸流水,不是自己不坚持,仅仅由于目标太不明白,总是不见成效.前一段时间最终感觉计划还得做,可是不能超过一个月,要把计划做到仔细到每一周每一天 ...

  5. php 内置的 html 格式化/美化tidy函数 -- 让你的HTML更美观

    php 内置的 html 格式化/美化tidy函数 https://github.com/htacg/tidy-html5 # HTML 格式化 function beautify_html($htm ...

  6. modSecurity规则学习(一)——配置文件

    环境:modSecurity3.0,nignx1.13.8 modSecurity配置文件 1.nginx.conf server { listen ; modsecurity on; //启动mod ...

  7. 三个角度解构云计算,商业驱动or技术驱动?

    从云计算的使用者到云服务的输出者,大多互联网公司在过去一年完成了角色的转换,也让云计算的未来更加扑朔迷离.不过,抛却进入时间这个评判因素,单从技术和商业化的角度来解构云计算的话,对于云计算的格局以及未 ...

  8. HTTP -- 请求/响应 结构

    一:一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据. 1.请求行 1.请求方法:GET POST 2.URL字段 3.HTTP版本字段 2.请求头 1.Accept:浏览器可接受 ...

  9. Android RecyclerView滑动监听,判断是否滑动到了最后一个item

    项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...

  10. UVA 12075 Counting Triangles

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...