返回

用小猪佩奇说明Javascript的原型和原型链?那只能说你是来捣乱的!

前端

用小猪佩奇说明Javascript的原型和原型链?那只能说你是来捣乱的!

有的文章,就喜欢用一个有名有姓的物品或者人和具体的事件,尝试将一个本来枯燥乏味的东西用一种全新的视角讲出来。说句实在的,效果确实比死板板的讲术语强,但是……但是!这只是一个比喻!如果比喻使用的场景和实际意思关系不大,或者相差太远,那么比喻带来的反而是一种误导。不信?看看下面的例子:

用小猪佩奇来说明Javascript的原型和原型链!

emmmmmm,用小猪佩奇来说明Javascript的原型和原型链?Are you kidding me?(你是不是在开玩笑?)

原型和原型链,是Javascript中用来解释对象之间关系和继承机制的概念。简单来说,原型定义了一个对象的公共属性和方法,而原型链则了这些对象之间的继承关系。Javascript中的每个对象都有一个原型,并且可以通过原型链访问其父对象(原型)的属性和方法。原型和原型链的概念,在Javascript中非常重要,也是理解Javascript面向对象编程的基础。

试想一下,在Javascript中,函数也是对象。函数的对象,有属性和方法。这些属性和方法是什么呢?有:

  • length 属性:表示函数的参数个数。
  • name 属性:表示函数的名称。
  • arguments 属性:表示函数的参数对象。
  • prototype 属性:表示函数的原型对象。

函数的原型对象,也是一个对象,也有自己的属性和方法。这个原型对象,就是函数创建的对象的原型。原型对象,也可以有自己的原型对象。这个原型对象的原型对象,就是函数创建的对象的原型对象的原型。以此类推,一直到顶层原型对象。

顶层原型对象,只有一个。它就是Object.prototype。

Javascript中的每个对象,都有一个原型。这个原型,就是Object.prototype。Object.prototype,就是Javascript中所有对象的祖先。

好了,下面我们回到“用小猪佩奇来说明Javascript的原型和原型链”这个话题。

小猪佩奇,是一个动画片中的角色。她有爸爸、妈妈和弟弟乔治。他们都是小猪。小猪佩奇,有小猪的共同特征:

  • 都有粉色的皮肤。
  • 都有大大的耳朵。
  • 都有卷曲的尾巴。

小猪佩奇的爸爸、妈妈和弟弟乔治,也都有这些特征。

Javascript中的对象,也有共同的特征。这些特征,就定义在Object.prototype中。Object.prototype,就是Javascript中所有对象的原型。

小猪佩奇的爸爸、妈妈和弟弟乔治,都是小猪。他们有共同的特征。这些特征,就定义在小猪佩奇的原型中。小猪佩奇的原型,就是小猪佩奇的爸爸、妈妈和弟弟乔治的原型。

小猪佩奇的爸爸、妈妈和弟弟乔治,都可以访问小猪佩奇的原型中的属性和方法。小猪佩奇的爸爸、妈妈和弟弟乔治,也可以访问Object.prototype中的属性和方法。

Javascript中的对象,也可以访问其原型中的属性和方法。Javascript中的对象,也可以访问Object.prototype中的属性和方法。

所以,“用小猪佩奇来说明Javascript的原型和原型链”这个说法,根本就是错的!原型和原型链,是用来解释Javascript中对象之间关系和继承机制的概念。小猪佩奇,是一个动画片中的角色。她有爸爸、妈妈和弟弟乔治。他们都是小猪。原型和原型链,和小猪佩奇没有半毛钱关系。