10Js面试题-原型和原型链

540 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、构造函数

image.png

image.png

二、原型规则

  1. 所有的引用类型(数组、对象、函数)(除null以外)都具有对象的特性,即自由扩展属性
  2. 所有的引用类型(数组、对象、函数)都有一个__proto__属性(隐式原型),属性值时一个普通的对象
  3. 所有的函数都有一个prototype属性(显式原型),属性值也是一个普通对象
  4. 所有引用类型(数组、对象、函数),__proto__属性指向(完全等于===)它的构造函数的prototype属性
  5. 当试图得到一个对象的某个属性式,如果这个对象本身没有这个属性,那么就会去它的__proto__属性(即它的构造函数的prototype属性)中寻找

image.png

原型使用示例如下:

image.png

  • 使用for in可以循环对象自身的属性,在高级浏览器中for in屏蔽了来自原型的属性,但是为了保证程序的健壮性,建议使用hasOwnProperty()方法结合if语句过滤掉原型的属性

image.png

三、原型链

image.png

instanceof方法

instanceof是用于判断引用类型属于哪个构造函数的方法(在原型链上查找)

image.png

四、面试题

(一)如何准确判断一个变量时数组类型

  • 使用instanceof方法 image.png

(二)写一个原型链继承的例子

image.png

(三)描述new一个对象的过程

  • 创建一个新对象
  • this指针指向这个对象
  • 指向代码,即对this赋值
  • 返回this

image.png