锁定老帖子 主题:领悟 JavaScript 中的面向对象
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-28
我是从ASP.NET 的 AJAX 框架学到这种方法的,我感觉用JAVA来做和用.NET来做都差不多,反正客户端的JAVASCRIPT是省不掉的,大家都得用相同的方式来操作对象
|
|
返回顶楼 | |
发表时间:2008-02-04
very good
|
|
返回顶楼 | |
发表时间:2008-02-08
如果asm是application的老祖,那么js就是web world的生产力.再怎么探索,研究都是不过分的. 挺欣赏作者这样行文流水的文笔,难得的好的技术文章.
|
|
返回顶楼 | |
发表时间:2008-02-19
mudong 写道 嗯 看完之后确实很受益 谢谢楼主
不过我发现一个问题 func.name = “I am func.”; alert(func.name); 打印出来的是 func 而不是“I am func.” 属性换个名字就可以 比如换成 name1 还有 1. func.prototype.name=”prototype of func”; 2. var f = new func(); 3. alert(f.name); 这个就可以打印出”prototype of func” 各位大人解释一下这是为什么呢? 在这里可以把 func理解成一个对象,f也是一个对象。两个是独立的。 对于func这个对象 他的name属性是func,即 func.name=func 。对于f变量 它是由 func()函数构造的,在这个构造函数中,把func对象的prototype所有属性值拷贝到 f变量中。 |
|
返回顶楼 | |
发表时间:2008-02-24
写的不错 我回去试试看看还有什么问题
|
|
返回顶楼 | |
发表时间:2008-02-26
jonson 说的好像是对的,我是这么理解的~~
我是看了这个文章才明白的 还有达人要来补充一下么? |
|
返回顶楼 | |
发表时间:2008-02-27
自己补充一下,好像说的拷贝是不是有问题,实际是根据 prototype chain来找到的? 而var f = new func() 得到的f ,这个对象的prototype没有赋值,是默认的undefined(null)~~
那么应该是根据 xieye 的指点,从它的构造函数的prototpye chain 开始找,而不是自己的? 而构造函数的关联,是不是通过constructor 属性? 都是猜测,抛砖引玉,希望高人来解答~~ |
|
返回顶楼 | |
发表时间:2008-02-27
不错 不错 写的非常的有特色...
|
|
返回顶楼 | |
发表时间:2008-02-28
var o= {}; // 我发现了一个东西。
o.eat = function(){return "I am eating."}; // 我发现它会吃; o.sleep = function(){return "ZZZzzz..."} ; // 我发现它会睡; o.talk = function(){return "Hi!"}; // 我发现它会说话; o.think = function(){return "Hmmm..."}; // 我发现它还会思考。 var Human = new Function(); // 我决定给它起名叫“人”。 Human.prototype = o; // 这个东西就代表了所有“人”的概念。 var h = new Human(); // 当我发现其他同它一样的东西, o.talk=function(){return "changed!"}; alert(h.talk()); 结果显示是changed Human.i=3; h=new Human(); alert(h.i);结果是undifined 学习一番后结论就是:原型是引用自上层函数可以一直追溯到object的原型,而非原型的部分是由上层函数的构造函数copy至当前函数。 有意思的是 Function Human() { this.i=3; } 用alert(Human.i)居然访问不到 而 alert(new Human().i)则可以 以function f() { this.test1=1; } f.test2=2; f.prototype.test3=3; ff= new f(); 为例 所以对象函数f应该分为3个部分,分别是test1,test2,test3。 ff没有构造函数,ff.test1=1;并且ff.prototype.test3=3;而test2的数据无法取到了。 初学者看了这篇之后找了一些资料得出的结论,不知道对不对,请指教。 |
|
返回顶楼 | |
发表时间:2008-03-04
zengsun 写道 楼主注意!!!
Javascript是基于对象的语言!不是面向对象的语言!!! Javascript没有明确的类的概念,但可以模拟。 你这种观点可能要改改,为什么说不是面向对象呢?面向对象的三个特征:封装,多态,继承,js都表现出来了,那不是面向对象是什么呢? |
|
返回顶楼 | |