打印

[原理]javascript 之 oop 最基础的示例

下面我这里给出一个模型,其实现在很多朋友学面向对象编程思想的时候由于没有简单明了的示例而感到很迷茫.下面给出一个,不仅仅对于javascript.对于其他语言可能也有一定帮助,学的是思想,呵呵.

下面的代码很好理解
其实对于oop可以这样来理解:人有不同名字,可是他们都是2只手2只脚一个头没错吧?(不正常的排除,嘿嘿)
1.我就先建立一个人的模型(比如 人有名字.有身高.有体重等等.他还有一些动作.比如跳,跑,走.等等....)
2.然后再模型基础上建立一个拥有一些自己属性的人(比如他有自己特定的名字身高体重.他还能做跳跑走以外的动作)
3.然后可以随意调用这个对象(也就是可以把这个人放在我们自己设计的世界的任何一个地方并且让它干些什么,也可以让他学会干一些什么(建立新的动作)).



下面是示例代码
复制内容到剪贴板
代码:
<script>
//建立对象模型
function Man() {
    this.Name = null;       //给它一个属性
    this.SetNames = function(NewName) {      //定义一个动作
        this.Name = NewName;
    }
    this.ToString = function() {                      //定义一个动作
        return "名字是:"+this.Name;     
    }
}
//定义Auntion对象.
function Auntion() {}
Auntion.prototype = new Man;                              //指定父对象.
Auntion.prototype.ToString = function() {              //重新赋予ToString属性
        return this.Name;
};
//调用模型并自定义对象名称
var auntion = new Auntion();
auntion.SetNames("我叫Auntion,哈哈!")
//定义结束/
alert(auntion.ToString());
</script>


 提示:您可以先修改部分代码再运行
[ 本帖最后由 Nicest 于 2006-12-4 21:34 编辑 ]
本帖最近评分记录
  • hutia 威望 +2 原创内容 2006-12-4 19:15
NewBlog: auntion.blogbus.com
这个有点意思。。有点面向对象的意思 啊。。。
好难啊。。。。。。。看不明白哈。。。
http://www.qlili.com 个人站帮点啊
就当成是构造函数了,哈哈
百年的酒香;百年的树诚;百年的……

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
向对象还有多态和继承,不知javascript能模拟出来?

TOP

学到东西了,莫非这便是传说中的继承?呵呵。
不过楼主示例里面的Name属性好像不用SetNames方法就可以直接通过obj.Name=""来指定。我记得JS的构造函数里可以声明私有变量,只能通过对象内部方法访问的。
依楼主的代码改了下:
复制内容到剪贴板
代码:
<script>
<!--
function man() {
    var name;
    this.setname=function(nameVal) {
        this.name=nameVal;
    }
    this.getname=function() {
        return this.name;
    }
    this.showname=function() {
        alert("我的名字是:"+this.getname());
    }
}
alert("测试父对象");
var I=new man();
I.setname("测试");
I.showname();
alert("测试子对象");
function newman() {}
newman.prototype=new man();
newman.prototype.showage=function(ageVal) {
    alert("我的年龄是:"+ageVal+"岁");
}
var II=new newman();
II.setname("云彩");
II.showname();
II.showage("25");
//-->
</script>


 提示:您可以先修改部分代码再运行
我都这么久没上了,怎么还是只能50字节?

TOP

没意思。直接用ajax调用其他强语言的方法。

TOP

To 6楼: 继续继续,呵呵,其实javascript还是有很多有趣的地方.一些东西搬出来讨论一下也提升自己能力也能更加的了解这个语言.(对,可以声明私有变量.this方法来定义可以更方便的让子对象调用)

to 7楼: 重在讨论麻?至于有没有意思,那是个人的想法咯

[ 本帖最后由 Nicest 于 2006-12-4 14:16 编辑 ]
NewBlog: auntion.blogbus.com

TOP

引用:
原帖由 netharry 于 2006-12-4 13:01 发表
向对象还有多态和继承,不知javascript能模拟出来?
当然可以,呵呵.这下面还有个例子也很好的表现出来了,这是我在google上找的一点代码

 提示:您可以先修改部分代码再运行
[ 本帖最后由 Nicest 于 2006-12-4 14:13 编辑 ]
NewBlog: auntion.blogbus.com

TOP