关于js原型的思考
一直想讨论js原型的问题,但却不知道怎么入手,后来突然想到,能不能从作者的角度思考呢?
我要什么
- 我需要面向对象编程
- 我需要一门简单的的语言,所以不需要传统面向对象编程中类的概念,还要能够实现传统面向对象编程语言中类的功能
类和对象
面向对象编程,最重要的是类和对象,我不想要类,所以最重要的就是对象,所以第一步就是一切皆对象。
虽然没有类,但是我需要实现类的功能啊!没有类怎么生成对象呢?其实由类生成对象的过程,在传统面向对象的语言中,是偏语言底层的过程。我不想搞这么复杂,算了,直接用代码生成对象吧。用代码生成对象,就是执行一段js代码,生成了一个对象。
生成对象的问题解决了,要让生成对象这个代码段规范统一起来,就要和普通的代码段不一样,我得给这个东西规范一个名字,而且代码段最能让人想到的东西就是函数了,就叫这个构造函数吧!那么现在新的问题来了,在这个一切皆对象的世界里,构造函数算什么呢?肯定不能是别的,为了更加直接简单,我让构造函数也是对象,不对是所有的函数都是对象。怎样让函数也是对象?这里先不展开,先贯彻函数也是对象的概念就好。
解决了类和对象的问题,接下来就是面向对象编程的几个重要概念的实现了。