zhengzemin

无标题

前言

  • 在线音乐戳我呀!
  • 音乐博客源码上线啦!
  • 浑浑噩噩在前端领域磕磕碰碰了接近三年,想看看Vue源码,不知道有没有最近想看源码的猿友,如果JS不够硬,建议跟我一起来重学JS,重学完相信再去看源码,会事半功倍。
  • 尤其清晰的记得毕业期间有一次上课期间手机响起来,接了个面试电话,就问了原型、原型链,真的是怕什么来什么,当时对这块知识较模糊,支支吾吾回答不上来很尴尬。
  • 真花了几天几夜,只为呈现最好的文章。可能一次性看不完,建议点赞收藏,花再多时间也要硬啃下来,一定拿下原型链这块盲区知识,好嘛!!!
  • 接下来我们来看看JS的原型、原型链知识点都可以考些什么。
  • 请脑子清晰,跟着我的节奏,保证一回彻底啃下,Are you ready ?

每日一面:
面试官:知道什么是对象吗?
知道,不过我工作努力,上进心强,暂时还没有对象。但是打算找对象了。

先来问自己六七八道面试题

  • 说一下原型?

  • 说一下原型链过程?

  • Object.prototype.proto 值为啥?

  • 什么的显式原型、隐式原型都指向它自己?

  • 任何函数都是new Function创建的?

  • Function的显式原型是不是都是new Object出来的?

  • 所有的函数的__proto__都是一样的?

  • 所有函数的显式原型指向对象默认是空object实例对象?

想看答案,直接划到最下面
如果会了,面试官随便拿捏好吧。
如果不会,我们先来理解原型、原型链的概念。
只有知道问题背后的原理知识,解题必然随手拈来。

原型与原型链

  • 原型(prototype)

  • 显式原型与隐式原型

  • 原型链

一、原型

1.1 函数的prototype属性

1.1.1. 每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)

上段代码方便理解这段话:

function Fun () {}

console.log(Fun.prototype)  // 默认指向一个Object空对象(没有我们的属性)

1.png

我们定义的Fun函数有一个prototype属性,而且打印出来默认指向Object空对象。

❓ 杠精上身:我不信,那为什么Date函数怎么一创建就默认有很多方法?

有图有真相。

2.png

你不是说prototype属性, 它默认指向一个Object空对象,打印出来这么多方法(揭穿你),不过typeof Date.prototype确实是object对象类型。

相关文章: