推荐看imooc的JavaScript深入教程,对JavaScript面向对象讲解的更清晰.
-----分割线----
第一次用prototype的时候,比较迷茫。相对于Java,OC这类语言来说,prototype来继承完全搞不懂在干什么。看了现代简明魔法的文章后,恍然大悟。其实是因为JavaScript是一种base prototype 语言,java之类的是base class语言。所以当然大不相同,不需要以以前java的方式来思考,重新接受一种新的方式即可
最后一段即为大致js的工作全过程:
所以var obj=new func()这个过程更具体是这样的:
javascript解析引擎遇到new后,开辟一片内存并创建了一个空对象,并且将“this”指向这个空对象
javascript解析引擎将这个空对象的proto指向后面紧跟着的构造函数默认的prototype对象(一指向到prototype对象后,解析引擎就知道了“噢,这个对象要拥有这个prototype对象的属性和方法了”)
javascript解析引擎执行构造函数体内的代码,也就正式开始对这个空对象进行构造(或者说装配)的过程了(this.name="xxx",this.sayHello=function(){...}等等)
对象被构造装配好,并赋值到等号左边的变量。
PS:__proto__type上文已经提到,不了解的读者,请去阅读全文。
网友评论