A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 束玉杰 于 2020-4-7 10:13 编辑

1、Js的原型和原型链怎么理解?原型链有什么应用?
答:js原型以及原型链是js面向对象编程的基础和重点,这个也是笔试和面试常问到的问题。
    每一个构造函数都有一个属性prototype,这个属性他指向就是我们常说的构造函数的原型。每当我们通过构造函数要去new一个实例的时候,new操作符会做些事情,其中有个操作就是会把构造函数的属性和方法挂在实例的this上。每个对象都有_proto_这个属性,当一个实例去找一个方法或属性的时候,首先在自身上找,如果找不到会通过proto向原型上找,这样一层一层向上的关系,我们称之为原型链。原型链的最重要的作用就是实现了继承。
2、你对call 和apply怎么理解?
答:这个问题几乎是js笔试必出的题目,这两个方法其实还是挺简单的,要掌握的。
  call和apply可以用来重新定义函数的执行环境,也就是改变this的指向。
call 和apply的区别在于:call接的参数是固定的,按照顺序输入。apply接收的参数是一个数组或者伪数组。
3、继承有哪些方式?你的项目上有应用过继承吗?
答:继承的方式很多种,每种的叫法可能有些差别,所以大家在记得时候一是只需记几个常用的,二是你记得这几个方式要能举出一个例子来
1)原型链继承
2)构造函数继承,用call和apply来实现
3)混合方式,混合了call方式、原型链方式。
4)......
关于项目上是否有用过这个问题,一般我们建议这样回答:因为公司开发更过的是考虑效率的,所以我们都是用的库、框架、插件。因为这些都是经过验证的能更好的应用到项目上而不会出现问题的而且开发效率高。所以我们项目上很少使用的,但是这些库或者插件的封装肯定是用到继承的,所以变向的是用到的了。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马