当前位置: 首页 > news >正文

快问快答JS面向对象面试题

1、说说你对闭包的理解

        使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念

        闭包有三个特性:

                1).函数嵌套函数

                2).函数内部可以引用外部的参数和变量

                3).参数和变量不会被F垃圾回收机制回收

2、js继承方式及其优缺点

        原型链继承的缺点

一是字面量重写原型会中断关系,使用引用类型的原型,并且子类型还无法给超类型传递参数。

        借用构造函数(类式继承)

借用构造函数虽然解决了刚才两种问题,但没有原型,则复用无从谈起。所以我们需要原型链+借用构造函数的模式,这种模式称为组合继承

        组合式继承

组合式继承是比较常用的一种继承方法,其背后的思路是 使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样,既通过在原型上定义方法实现了函数复用,又保证每个实例都有它自己的属性。

3、Javascript中callee和caller的作用?

caller是返回一个对函数的引用,该函数调用了当前函数;

callee是返回正在被执行的function函数,也就是所指定的function对象的正文。

4 . .call() 和 .apply() 的含义和区别?

        call() 和 apply() 是预定义的函数方法。两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。 后面的参数都是传递给当前对象的参数。

        区别:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

                Object.call(this,obj1,obj2,obj3)

                Object.apply(this,arguments)

        在 JavaScript 严格模式(strict mode)下, 在调用函数时第一个参数会成为 this 的值, 即使该参数不是一个对象。 在 JavaScript 非严格模式(non-strict mode)下, 如果第一个参数的值是 null 或 undefined, 它将使用全局对象替代。

5 . new操作符具体干了什么呢?

        1)、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。

        2)、属性和方法被加入到 this 引用的对象中。

        3)、新创建的对象由 this 所引用,并且最后隐式的返回 this 。

     

   以上就是“快问快答JS面向对象面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以加扣扣群390144688下载更多面试题。

http://www.lryc.cn/news/99241.html

相关文章:

  • googlenet论文理解
  • OnnxRuntime TensorRT OpenCV::DNN性能对比(YoloV8)实测
  • 【QT 网络云盘客户端】——获取用户文件列表信息
  • 从0到1,无代码开发如何简化产品创新流程
  • select、epoll 的快速核心理解
  • HTTP和HTTPS的区别
  • 分布式异步任务处理组件(二)
  • Jenkins 拉取 GitHub 私有仓库失败问题
  • 小程序 多层次对象数组的赋值、动态赋值
  • angular踩坑
  • C#时间轴曲线图形编辑器开发1-基本功能
  • elasticsearch查询操作(DSL语句方式)
  • JavaScript详解
  • 电缆振荡波局部放电检测定位技术
  • AI Chat 设计模式:10. 组合模式
  • 【Nginx12】Nginx学习:HTTP核心模块(九)浏览器缓存与try_files
  • 【1】-Locust性能测试工具介绍与安装
  • 基于拉格朗日-遗传算法的最优分布式能源DG选址与定容(Matlab代码实现)
  • 【已解决】jupyter notebook里已经安装了第三方库,还是提示导入失败
  • Mybatis使用collection映射一对多查询分页问题
  • Linux/Windows路由管理
  • openpnp - 设备矫正的零碎记录
  • Linux内核中的链表、红黑树和KFIFO
  • 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动
  • Android 设备兼容性使用(详细版)
  • React 中的常见 API 和生命周期函数
  • 神经网络中遇到的 python 函数(Pytorch)
  • 分布式事务及解决方案
  • 【宏定义】——编译时校验
  • C#学习系列之System.Windows.Data Error: 40报错