JS还有很多很多东西要学习了解。js是基于原型的OOP语言,想进一步了解纯的OOP思想,推荐了解一下JAVA。JAVA他本身除了是一个纯OOP语言之外,还有很多后台开发的东西可以一拼了解。然后关于构造函数,原型,实例等等之间的联系需要搞的明白一点。
一、构造器(constructor)
1、constructor始终指向创建当前对象的构造(初始化)函数。
http://www.cnblogs.com/jikey/archive/2011/05/13/2045005.html
2、每个函数都有一个默认的属性prototype,而这个prototype的constructor默认指向这个函数
http://blog.csdn.net/kittyjie/article/details/4380918
其实在JS中构造器就是函数,函数就是构造器,对象实例就是通过var obj=new 函数();这种形式新建出来的实例。区别这些,在说prototype和constructor。从上面的英文中可以看出,prototype是个对象,里面定义了一个constructor,那么我们可以推论出,constructor是对象实例的属性!而不是函数(构造器)的属性。反过来,prototype是函数(构造器)的属性,而不是实例的属性!
我要强调一点就是__proto__是实例和Person.prototype之间的关系,而constructor是实例和Person之间的关系
http://blog.csdn.net/a569171010/article/details/7467514
他们的关系:
instance -> __proto__ -> person.prototype -> constructor <- person.prototype -> function Person(){} -> Object() -> window
http://www.cnblogs.com/o-andy-o/archive/2012/11/20/2778260.html
http://ejohn.org/apps/learn/#1
2. prototype
一、什么是原型(prototype)
1、prototype本质上还是一个JavaScript对象;
2、每个函数都有一个默认的prototype属性;
3、通过prototype我们可以扩展Javascript的内建对象
http://blog.csdn.net/a569171010/article/details/7467514
http://www.iteye.com/topic/195409
http://stauren.net/log/eggxfygvg.html
二. 原型链: 常用原型来实现继承,其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。简单说,构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。假如我们让原型对象等于另一个类型的实例。那结果将是:此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。假如另一个原型又是另一个类型的实例,那么上述关系成立,如此层层递进,就构成了实例与原型的链接。这就是原型链的基本概念。
http://blog.endlesscode.com/2010/01/23/javascript-prototype-chain/
http://www.cnblogs.com/ziyunfei/archive/2012/10/15/2723963.html
https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide
http://blog.csdn.net/siczxw555/article/details/6138428
http://www.cn-cuckoo.com/2007/08/01/understand-javascript-closures-72.html
http://www.zhuoda.org/lunzi/101543.html
3. 闭包
http://www.cnblogs.com/luluping/archive/2009/05/27/1490551.html
http://www.cnblogs.com/xiaoruoen/archive/2011/09/23/2185832.html
http://ghsky.com/2010/11/deep-into-javascript-closure-part-two.html
http://www.felixwoo.com/archives/247
http://www.cnblogs.com/hh54188/archive/2012/03/01/2374921.html
http://blog.csdn.net/a569171010/article/details/7484125
http://bbs.51js.com/viewthread.php?tid=79018&extra=&highlight=%2Bwinter&page=1
4. call,apply
http://topic.csdn.net/u/20081209/23/0823c850-5a56-421e-8922-fa35b26a517a.html
http://www.cnblogs.com/treasurelife/archive/2008/03/05/1092251.html
5. function
http://desert3.iteye.com/blog/1198400
http://chillwarmoon.iteye.com/blog/77123
6. js扩展的一些知识点:
命名函数表达式探秘
http://bbs.51js.com/viewthread.php?tid=85245&highlight=scope
Scope Chain的问题
http://bbs.51js.com/viewthread.php?tid=83841&highlight=%D7%F7%D3%C3%D3%F2
try catch作用域的疑问
http://bbs.51js.com/viewthread.php?tid=85310&highlight=%D7%F7%D3%C3%D3%F2
变量作用域和词法作用域的区别
http://hax.iteye.com/blog/104393
关于JScript 5.6及其之前(IE6)引擎的创建对象的性能问题
http://bbs.51js.com/viewthread.php?tid=83190&extra=page%3D2%26amp;filter%3Ddigest
JScript下Array对象的性能问题
http://bbs.51js.com/viewthread.php?tid=83586&extra=page%3D1&page=1
为为什么不用with
http://bbs.51js.com/viewthread.php?tid=79018&extra=&highlight=%2Bwinter&page=1
JS引擎的Closure测试
http://bbs.51js.com/viewthread.php?tid=74299&highlight =
转贴Aimingoo:JavaScript面向对象的支持
http://bbs.51js.com/viewthread.php?tid=77398&highlight =
用functional思想编写js一例——缓动效果
https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Details_of_the_Object_Model
对象模型的细节
自学笔记,本文转载于-----http://www.cnblogs.com/jikey/p/3604459.html
网友评论