1. http://pleac.sourceforge.net/ 各种语言的教程,看了一下python,还不错。
2. https://learn-python-the-hard-way-zh_cn-translation.readthedocs.org/en/1.0/intro_zh.html
3. http://www.codecademy.com/
现在有python,ruby,web,javascript/jquery等,有空可以学习一下。
2012年5月24日星期四
javascript的原型继承
参考:
http://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/
http://javascript.crockford.com/inheritance.html
1. 原型继承的所谓原型是一个对象。
2. javascript的function才有prototype属性,这个属性存储的是原型对象的引用,这个主要是为了创建对象时,使用原型对象进行初始化新对象。
3. 在实现中,如firefox,每个对象都有一个__proto__的属性(function也是一个对象,继承的原型是Function)。这个属性也是指向原型对象的引用,只不过是由javascript内部维护的,在创建新对象时,javascript内部会将其赋值为prototype属性(this.__proto__ = fn.prototype, fn为声明的function名称),当访问对象的变量或方法时,如果该对象没有声明次变量或方法,则去__proto__指向的原型对象中去找。prototype属性只是提供给javascript的使用者提供的一个设置原型对象的途径,所有的类似访问对象,或instanceof之类的操作,都是依赖__proto__属性完成的,所以,如果把prototype属性重新复制为一个新的对象,由于是通过__proto__去找的,所以如果不相应的修改__proto__,是找不到对应的属性的。(具体见下面的例子)
http://javascriptweblog.wordpress.com/2010/06/07/understanding-javascript-prototypes/
http://javascript.crockford.com/inheritance.html
1. 原型继承的所谓原型是一个对象。
2. javascript的function才有prototype属性,这个属性存储的是原型对象的引用,这个主要是为了创建对象时,使用原型对象进行初始化新对象。
3. 在实现中,如firefox,每个对象都有一个__proto__的属性(function也是一个对象,继承的原型是Function)。这个属性也是指向原型对象的引用,只不过是由javascript内部维护的,在创建新对象时,javascript内部会将其赋值为prototype属性(this.__proto__ = fn.prototype, fn为声明的function名称),当访问对象的变量或方法时,如果该对象没有声明次变量或方法,则去__proto__指向的原型对象中去找。prototype属性只是提供给javascript的使用者提供的一个设置原型对象的途径,所有的类似访问对象,或instanceof之类的操作,都是依赖__proto__属性完成的,所以,如果把prototype属性重新复制为一个新的对象,由于是通过__proto__去找的,所以如果不相应的修改__proto__,是找不到对应的属性的。(具体见下面的例子)
01 | var A = function (name) { |
02 | this .name = name; |
03 | } |
04 |
05 | var a = new A( 'alpha' ); |
06 | a.name; //'alpha' |
07 |
08 | A.prototype.x = 23; |
09 |
10 | a.x; //23 |
01 | var A = function (name) { |
02 | this .name = name; |
03 | } |
04 |
05 | var a = new A( 'alpha' ); |
06 | a.name; //'alpha' |
07 |
08 | A.prototype = {x:23}; |
09 |
10 | a.x; //null |
订阅:
博文 (Atom)