首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

老鱼博客 浅谈javascript面向对象编程解决思路

2012-03-09 
老鱼博客 浅谈javascript面向对象编程JScript codescript typetext/javascriptvar ioldFish functi

老鱼博客 浅谈javascript面向对象编程

JScript code
<script type="text/javascript">     var ioldFish = function(name,age){       return ioldFish.func.init(name,age);        };     ioldFish.func = ioldFish.prototype ={         init:function(name,age){             this.name = name;             this.age = age;             return this;         },         showInfo:function(){             var info = "my name is" + this.name +"i am " +this.age+"years old";             alert(info);         }     };     ioldFish.func.init.prototype = ioldFish.func;     ioldFish(" 老 鱼",27).showInfo();     //var oldFish = new ioldFish("老鱼",27);     //alert(oldFish.name); </script>


谁能解释解释这句话的含意
JScript code
ioldFish.func.init.prototype = ioldFish.func; 

还有这句
JScript code
ioldFish.func = ioldFish.prototype


[解决办法]
这不是模仿jquery的写法?!

ioldFish.func = ioldFish.prototype
这个就是定义一个对象的属性而已
eg:
 Object obj = new Object();
 obj.prototype = obj.func = ...... //

ioldFish.func.init.prototype = ioldFish.func; 
看下面例子:
function test(){

}
var pro = {
init : function(){

}
}
test.prototype = pro; //或者 test.prototype.init = function(){ ...}
 
var t = new test();
t.init();
[解决办法]
为什么那么写,我只能说是为了封装调用方便吧 - -

在js只有对象
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
1、该对象被类所引用,只有函数对象才可引用;
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。
[解决办法]
ioldFish.func.init.prototype = ioldFish.func; 
个人觉得这里是没有用的

ioldFish.func = ioldFish.prototype
这里也没有用

感觉程序本身有问题
[解决办法]
探讨
引用:
JScript codevar ioldFish=function(name,age){return ioldFish.func.init(name,age);   
    };
    ioldFish.func= ioldFish.prototype={
        init:function(name,age){this.name= name;this.age= age;retu?-

要是还不理解。先看看这个简单的。
JScript codevar B=function(){}var A=B.prototype={
b:123,
a:function(){alert(this.b)}
}var a=new B();
a.a()
A.a();

热点排行