无标题
前言
- 在线音乐戳我呀!
- 音乐博客源码上线啦!
- 浑浑噩噩在前端领域磕磕碰碰了接近三年,想看看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空对象(没有我们的属性)
我们定义的Fun函数有一个prototype属性,而且打印出来默认指向Object空对象。
❓ 杠精上身:我不信,那为什么Date函数怎么一创建就默认有很多方法?
有图有真相。
你不是说prototype属性, 它默认指向一个Object空对象,打印出来这么多方法(揭穿你),不过typeof Date.prototype
确实是object对象类型。