简单理解简单理解js的的prototype属性及使用属性及使用
在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程。
百度js的prototype的文章,先看看,W3School关于prototype的介绍:
你觉得这概念适合定义js的prototype这个东西吗?你是否也认为prototype是一个object对象的属性呢?是的话,请认真认真看
我这篇文章,因为这篇文章会毁灭你的人生三观,呵呵,就是有这么严重,因为本人就是被这个定义给害惨的。
不得不说,看了网上的一些介绍prototype的文章,基本上都说prototype是对象的一个属性,于是,我也坚定的认为prototype
是一个对象的属性,所以,我被了坑好久好久,由此,引发的后果就是,我一次次的误解别人写的含有prototype的js代码,也
就是当别人亮出js的prototype这个属性来写js代码时,我看着他们写的代码都是 ····一头雾水····· ,悲催啊!所以,我恨
死prototype这个东西了,因此,在这里,我今天必须把js的prototype属性道个明明白白。看官,请擦亮你的眼睛,仔细看我
下面的实验。
当然,我希望诸位看官也能够静下心来,把我下面的实验重新做一遍,好证明我的结论是正确的。
同时,也为了证明·····我没有····骗你们·····,呵呵,废话不多说了,下面进入实验阶段。
先介绍一个下面要用到的函数,JSON.stringify(value)。
这个函数的作用是:把传入的参数value变成字符串,它有三个参数,第一个参数是必须的,其余的两个参数可填可不填。
关于JSON.stringify函数的作用请看这篇文章。//www.jb51.net/article/29893.htm,这里说的很清楚。
首先,测试W3Schol的定义到底行不行的通:
如果,真如W3Schol所说的那样,prototype是object的一个属性,那么,我们来创建一个对象,看看这个对象的prototype到
底是啥。
var ob = { };//超级简单的空对象
alert(JSON.stringify(ob.prototype));
你觉得上面的代码会alert出什么呢?既然prototype是object的一个属性,那么上面肯定能够获取到什么东西对吧?但是,如果
你拿这段代码去做实验了,你会被打脸的,因为它alert的东西是·········undefined··········,也就是说object这个属性prototype不
是个东西,很残酷吧,但现实就是这样,任何对象引用prototype都会出现undefined,不信,你可以试一试。
我可以很明白的告诉你,prototype绝对不是给对象用的,对象根本没办法引用prototype这个属性,它真正的属主,其实是
···········函数········,记住,能够引用prototype的东西绝对是函数,绝对是函数,绝对是函数,prototype是属于函数的一个属
性,prototype是属于函数的一个属性,prototype是属于函数的一个属性,能够引用它的只有·····函数····,能够引用它的只有
·····函数·····,能够引用它的只有····函数····,函数,函数,函数,重要的事情一定要说千百遍,呵呵,因为只有明确这一点,下
面,你才明白我要讲的东西。别怪我这么墨迹啊!
下面,我要给prototype一个名副其实的定义:
prototype是函数的一个属性,是函数的原型对象。