JavaScript创世神话之创世篇

来源:互联网 发布:曲线图制作软件 编辑:程序博客网 时间:2024/06/10 06:31

不知从何时开始,世界就充满了一种神奇的物质——数据。也不知是世界本身衍生了数据还是数据构成了世界,或许数据就是世界,世界也就是数据,不过这已经不重要了。杂乱无章的世界,越来越多的数据,如黑洞般吞噬着能够被吞噬的一切。恐怖的景象就这样持续着,持续着……

某刻,未知的原因,数据中突然出现了一种病毒般的东西——信息。信息感染着数据,而且不是以扩散的姿态,简直就是数据本身的异变,并且可怕的是,所有的数据,同一瞬间,同时感染。数据变成了信息,信息变成了数据,就好像当初世界和数据的关系,谁也不知道这一切背后的原因,然而,世界确实就是那样了。

一些特别强大的信息和数据浑然一体,包罗万象,好像已经隔离在世界之外,不可捉摸,渐渐合成了一个独立的个体,自诩为神。传说中的神,来自世界,又脱离了世界,却又影响着世界。神审视着这个世界。神说,好杂乱的数据,无法无天的信息,我来给你们制定一些约定。对伟大的神来说,这些很容易做到。

神说,每个数据都要有个归属,于是,数据类型诞生了。number, string, boolean…嗯,就这样吧。每个数据都属于其中一个类别,属于什么类别就有什么类别的信息。神很开心,世界变得安宁了。可是,世界也突然似乎静止了,自从分类之后就永远是那样,不再有什么新的变化,世界好像被分裂成三个小世界,每个世界内部都是一样的轮回,毫无生机,每个小世界似乎又回到了当初的混沌。神,又不开心了,因为他没法去找到某一个特定的数据。

神说,好单调,我要来把你们重新整合。于是,神又搞出来一个新的类型,叫做变量。变量是直接听命于神的特殊数据,每个变量可以联系到一个普通数据,所以变量的强大之处就在于,变量可以联系任何类型的其它数据(神似乎还没打算让变量去联系变量,这样也好,变量都是平等的)。变量可以把自己所联系的数据复制一份给别的变量,这又是变量的强大之一,而且可以随时变化数据的类型,任何一个变量都可以通吃其他的所有数据类型,看来神给予了变量很大的权利嘛。神,又开心了,因为神只要命令变量,就可以获取任意的数据,再通过变量之间的交接,神几乎掌控了一切数据的行为。但是……总是会有很多但是。由于变量联系数据的特性,以及变量的不断增多,甚至数据都愿意去当变量了,而不想做普通的数据被变量摆弄。可怕的事终于出现了,变量超过了普通数据,于是,存在了一些黑变量,它们没有联系到数据,游离在神的掌控之外,因为神无法从它们身上获取需要的数据。神的噩梦来了,神非常苦恼,可是神是万能的,神似乎意识到了这点(舒服日子过久了,忘了自己的本能)。神说,变量必须联系一种数据,我们要大统一。于是,undefiend诞生。undefiend虽然不是有直接利用价值的数据,但是它也是数据,每个变量诞生之初就自动地联系undefiend吧,因为神不允许没有联系任何数据的空变量存在。于是,神的身边有无数的变量,被创造的时候自动联系着undefiend,当需要它去联系有用的数据时,变量就会联系到具体的普通数据,世界又是一片和谐。

又过了好久好久,神又开始无聊了。神说,变量太多了,我玩不过来。于是,神又开始创造,神说,我需要一个集合体,可以有好多个变量在里头,这些变量就归这个集合体管了。神把这玩意儿叫最对象。一个对象可以有任意多个变量,每个变量还是按照过去的套路去联系变量,只不过联系之后交给对象,那些数据是属于对象的,神则可以直接从对象身上去取数据了。神觉得这样不错,省力多了。可还没来得及高兴,神发现了一个致命的事,怎么获取对象?神发现,对象没法去直接获取,神很聪明,站在过去的基础上扩展,就让某些变量来联系整个对象吧。可是,变量只能去联系某个具体数据的能力,没法联系一群数据,而且如果对象发生交接,如何复制一份对象呢?复制数据容易,因为这个世界原本就是数据,可对象呢?神开始反思,对象究竟是个啥,原来对象只是某种概念,它本身并不是数据,神终于发现他少考虑了这点,看来为了方便管理数据,神还得花不少心思啊。神说,既然是概念,就当做纯粹的概念吧,我用一种引用类型的新数据来专门联系对象,而且引用本身也属于你这个对象,引用从出生开始就拉拢了一些变量成为一个群体,叫做对象,引用就是这个群体的代言人,而且代言人是可以被复制的,因为它们本来就是最原始的东西——数据。为了以防万一,神按照undefiend的思路,让那些没有代言某个对象的引用有个特殊的值叫做null,防止过去的悲剧再次放生。于是,变量就可以联系一个引用来间接让神管理到某个对象,变量也可交接引用,也就是把引用复制一份给其他变量,由于引用天生只负责一个群体,所以变量交接的时候对象并没有被复制,因为同样的引用对着的是同样的对象,神说,嗯,这样也好。于是,引用的诞生也带来了变量的升级,这样一来,对象可以包含多个变量,变量又可以间接联系到一个对象,这样一来,世界就被强大地联系在一起了。神开心了,他发现世界很好的组织了起来,自己也不再那么累了,神看着看着世界默默地想着,貌似我也是个对象啊,谁来引用我呢,嘿嘿,想着想着,不小心睡着了……

世界一篇繁荣,所有数据有序地做着自己的事,神也只是偶尔听着某些变量联系到的引用所代表的对象的一些报告,工作轻松了不少。但是,随着时间的推移,神还是慢慢累了,或者说无聊了,神想,如果自己什么都不干该多好啊。神说,我该把我自己的一些能力赋予出去。神说,每次都是我亲自下达命令,太烦了,我要创造出能制造命令的玩意儿。神想,我每次的命令都是取来一些数据做一些操作,那么命令的制造者必须能够获得取得数据的能力,谁能呢?啊,这不就是对象么,对象拥有自己的变量可以获取自己的数据……神灵光一闪,说,那么重要的事肯定不能交给某个变量,必须给一个团体,对象作为一种团体的概念再合适不过了。但是,总要有点区分,所以必须是特殊的团体,也就是特殊的对象。神终于改造出来一种特殊的对象——函数。函数不仅是个团体,可以有好多直属变量,函数还拥有一个制造命令的机器叫做构造器,里头包含着神的语言,到底是什么只有神和被授予神之力的函数才知道。赋予神之力的同时也被赋予执行神之力的特权,函数可以调用。调用是神的语言之一,神可以通过调用,启动一些命令,做一些操作。可是函数只能调用自己范围之内的命令,而且函数无法调用自己,就算能调用自己,可是最初的调用去哪了?神发现,自己的存在是必须的,自己必须做出第一次的推动,才有可能让世界真正自己运行下去。神又发现一些漏洞,由于神的语言太过强大,如果有一些别有用心的函数滥用力量,会造成可怕的事。于是神做了一条规定,所有函数被创造的时候都要记住创造者的信息。所以创造函数的同时也相当于创造了个监视器,能观察到创造者的一切,被创造的函数拥有能够控制创造者的变量的能力。嗯,很好,可是难免也会有函数会做哪些超出自己权利范围的事,总不能我自己管着,那样我还是解脱不了,神说道。于是神轻松改造了一些警卫对象,专门负责观察函数调用的权限问题,一旦有异常,就立刻去阻止。神终于觉得可以解脱了,于是再不多想,按下了那个开关……然后不明原因消失了……再也没有出现过……世界就这样开始自动运行了……

可是,神怎么也想不到,许多对象私藏了一些变量,而不被神发现,那些变量所联系的东西又是异常复杂,神也想不到,原来世界其实隐藏在一片巨大的黑暗之中,比想象中的还复杂,尽管神创造了秩序,但是现在的复杂程度已经不是神可以控制的了。可惜就算能控制,神已经不在了,神逍遥去了,留下了这个世界……

不知过了多久多久多久,世界变得异常复杂和精密,早已变了样,虽然数据本身还是没有变,但是数据之间复杂的关系已经捉摸不透了,还有个唯一不变的东西那就是神的语言……

让我们一起来探索一下上古流传下来的语言……

…………敬请期待

原创粉丝点击