相信很多学习前端的朋友都认识JavaScript的三座大山。
这里假设阅读的朋友对js已经有一定的基础。如果没有的话,请暂时留步。
那js三座大山是什么呢?
1、原型和原型链
2、作用域和闭包
3、异步和单线程
本篇文章主要是写原型和原型链,至于后面两座大山,在我的下两篇文章会整理出来。
第一个问题:什么是原型?
原型分两类:显式原型(prototype)和隐式原型(__proto__)(proto左右两边都是两条下划线)
第二个问题:原型规则有哪些?
1、所有函数都有prototype属性,属性值是一个普通对象。
2、所有的引用类型(数组、对象和函数),都具有自由扩展属性(也就是原型属性啦)。(null除外)
3、所有的引用类型都具有__proto__属性,并且指向他们的构造函数的prototype属性。
4、如果一个对象找不到本身的属性,那么会寻找构造这个对象的属性。
是不是看得有点费解?下面让我用实例来说明!
第三个问题:什么是原型链
第一个例子帮助你了解原型链,原型链其实就是__proto__的指向链接起来的各个对象。
第二个例子:是封装一个DOM查询的例子,通过获取节点,改变文本内容和事件。(适合面试拿出来秀一把)
如果可以的话,可以一起学习。大家一起进步