解析原型链上篇:认识原型
2023-09-02 02:10:20
认识原型
在JavaScript这门语言中,面向对象可以说是JS学习路上的其中一座大山,因为这座大山中的精髓就是原型对象和原型链。看懂了原型和原型链的关系,对于现在我们使用的大量框架和库都会有很大的提升,由于其内部原型链的知识点为核心。本篇文章中,我们先通过几个常见的JavaScript的内置对象来逐渐认识原型。
原型对象的产生
原型对象在JavaScript语言中扮演着关键角色,我们知道JavaScript内部只有对象,而在JavaScript创建一个对象有两种方法,一种是采用new
操作符来生成一个基于构造函数的对象,一种则是通过对象字面量语法来生成对象。这两个生成对象的方法都有一个特点,就是如果对象没有任何显式声明的原型,那么JavaScript就会创建一个默认的原型,而这个原型正是JavaScript内置的Object对象。
函数也是对象
在JavaScript中,函数也是对象,函数的默认原型就是Function对象,对象的方法都有属性,函数对象也不例外,比如,hasOwnProperty
、toLocaleString
、toString
等,这些方法都是函数对象自带的方法。同样,数组、字符串、数字也是对象,其默认原型就是Array、String、Number对象,因此所有的JavaScript对象都有一个prototype属性,并且都是指向相应的原型对象。
原型对象上的属性和方法
在原型对象中,除了继承自Object内置对象的属性和方法外,原型对象还可以包含其他属性和方法。比如,在Object原型对象中,定义了hasOwnProperty()
方法,该方法返回一个布尔值,用于判断一个对象是否具有某个属性。在Array原型对象中,定义了push()
方法,该方法用于向数组末尾添加一个或多个元素。
原型链
原型链是一个概念,它了对象之间的继承关系。原型链是指一个对象可以访问其原型对象的所有属性和方法,原型对象又可以访问其原型对象的属性和方法,如此递归下去,直到到达Object对象。换句话说,原型链是一个对象及其所有原型对象形成的链条。
原型链的查找机制
JavaScript在查找属性或方法时,会先在当前对象中查找,如果没有找到,就会沿着原型链向上查找,直到找到该属性或方法为止。如果在整个原型链中都没有找到该属性或方法,那么就会返回undefined
。
结语
原型链是JavaScript中一个非常重要的概念,它使JavaScript具有面向对象编程的特性。通过理解原型链,我们可以更好地理解JavaScript的继承机制,并编写出更优雅、更可维护的代码。