该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-19
一般是这样的写法
var A = function(...) { this.field = ...; // 对象的数据,每个对象都有自己的属性值 ... } A.prototype.sayHello = function() { // 对象的方法 ... } |
|
返回顶楼 | |
发表时间:2007-10-16
>>> Object.prototype.mix=function(sub){sub.call(this);var temp=Object.extend({},sub.prototype);temp.__proto__=this.__proto__;this.__proto__=temp} function() >>> function test(){this.a=123} >>> test.prototype.b=345 345 >>> a={} Object >>> a.mix(test) >>> a Object a=123 b=345 >>> function test2(){this.c=678} >>> test2.prototype.test3=789 789 >>> a.mix(test2) >>> a Object a=123 c=678 test3=789 b=345 >>> test2 test2() >>> test2.prototype Object test3=789 >>> test.prototype Object b=345写了个mix方法,我觉得基本实现多继承,不知道楼主怎么看待,我觉得多继承是可能的 |
|
返回顶楼 | |
发表时间:2007-10-18
请版主删除
|
|
返回顶楼 | |
发表时间:2007-10-20
"此时的 height 就是逃逸变量,从 Desk 函数中以作为对象上绑定的函数的环境上绑定的变量“逃”了出来(这句话有些拗口,不过的确如此)。"你解释的不是很清楚,其实就是scope chain,每个function都有自己的scope如果其中又定义了function,就会引发scope chain,scope chain当中只要chain下面有一个函数的引用还可获取(不管是timeout还是放到全局变量),那chain向上所有scope当中变量全部不释放,但是js有一点处理的不是很好的就是,如果你没有显示声明一个function的参数名,完全使用arguments获得,那在scope chain当中arguments将被覆盖,chain以上无法获得,不过Rhino实现当中__parent__好象就是找scope chain链表对象的,但是标准上面和原形链一样这些都是隐式的,不可获取的,lambda演算是个什么东西?
|
|
返回顶楼 | |
发表时间:2007-10-22
实现多继承是可以的,但想基于自有机制是不可能的。不安全的多继承,还是免了吧。
PS: 楼上用到什么JS解释器,是firebug吗? |
|
返回顶楼 | |
发表时间:2007-11-03
楼主只有18岁有这个造诣实在是令人佩服!!
感慨。 |
|
返回顶楼 | |
发表时间:2007-11-10
charon 写道 貌似很多开源包和很多人都实现了自己的extends/mixins或者类似的方法.有些在里面还干了一些非常magic的事情。
这个,大概是用基于prototype的语言来实现这些东西的困惑巴。因为没有在语言级别提供直接的支持,于是大家都百花齐放,或者说的难听一点就是各奔东西了。直接的结果是某些开源包互相之间有冲突,不能拿来一齐使用(我有近半年没用过javascript了,或者现状已经改变了?社区有了大一统的做法?) 另外,这里还差一个多态的实现,虽然简单,但称不上优雅。也一齐补全了吧 为何说差一个多态实现?对于弱类型的OO语言来说,根本无需类型检查,不是更好更原生的多态支持么? |
|
返回顶楼 | |