javascript的类、委托、事件

很多javascript新手都觉得javascript的类、委托、事件很神秘,当你看下面几段代码后,你会觉得它也不过如此,和其他的面向对象的语言没什么差别。

 javascript中的类:

ContractedBlock.gif ExpandedBlockStart.gif javascript中的类
function Person(name, age) {
            
this._name = name;
            
this._age = age;
            
//对应Name的Get,Set方法,这个和Java的属性写法很像。
            this.getName = function() {
                
return this._name
            };
            
this.setName = function(name) {
                
this._name = name;
            }
            
//对应Age的Get,Set方法
            this.getAge = function() {
                
return this._age;
            }
            
this.setAge = function(age) {
                
this._age = age;
            }
            
//显示Person的信息方法
            this.show = function() {
                alert(
"Name:" + this.getName() + "; Age:" + this.getAge());
            }
        }

        
//空构造方法
        var p1 = new Person();
        p1.setName(
"Southsea");
        p1.setAge(
23);
        p1.show();

        
//带参的构造方法
        var p2 = new Person("Southsea"23);
        p2.show();
        
        
//注:Javascript中没有真正的方法重载

 

看起来很简单吧。

下面我们把Pererson类的show方法加一个参数,让它具有委托的功能。

 

ContractedBlock.gif ExpandedBlockStart.gif 委托
        function Person(name, age) {
            
this._name = name;
            
this._age = age;
            
//对应Name的Get,Set方法,这个和Java的属性写法很像。
            this.getName = function() {
                
return this._name
            };
            
this.setName = function(name) {
                
this._name = name;
            }
            
//对应Age的Get,Set方法
            this.getAge = function() {
                
return this._age;
            }
            
this.setAge = function(age) {
                
this._age = age;
            }
            
//显示Person的信息方法
            this.show = function(delegate) {
                
if (delegate) {
                    
delegate(this);
                }
            }
//只有这段与上面的不同。
        }

        
//订阅Person类的show
        function showPerson(p) {
            alert(
"Name:" + p.getName() + "; Age:" + p.getAge());
        }

        var p 
= new Person("Southsea"23);
        p.show(showPerson); 
//别写成p.show(showPerson());哦

 

javascript中的事件

ContractedBlock.gif ExpandedBlockStart.gif 事件
        function Person(name, age) {
            
this._name = name;
            
this._age = age;
            
//对应Name的Get,Set方法,这个和Java的属性写法很像。
            this.getName = function() {
                
return this._name
            };
            
this.setName = function(name) {
                
this._name = name;
            }
            
//对应Age的Get,Set方法
            this.getAge = function() {
                
return this._age;
            }
            
this.setAge = function(age) {
                
this._age = age;
            }
            
this.onShow = null;//加了onshow事件
            
//显示Person的信息方法
            this.show = function() {
                
if (this.onShow) {
                    
this.onShow(this);
                }
            }
        }

        
//订阅Person类的show
        function showPerson(p) {
            alert(
"Name:" + p.getName() + "; Age:" + p.getAge());
        }

        var p 
= new Person("Southsea"23);
        p.onShow 
= showPerson; //千万别写成p.onShow = showPerson();
        p.show(); 

 

委托和事件都看起来很简单吧。

javascript的动态类,它的格式是与JSON一样的。

 

ContractedBlock.gif ExpandedBlockStart.gif 动态类
        var person = {
            
"Name""Southsea",
            
"Age"23"show": function() {
                alert(
"Name:" + person.Name + "; Age:" + person.Age);
            }
        };
        person.show();

 

上面的几段代码是不是看起来很简单呀,希望这编文章对你有一定的帮助。。。

转载于:https://www.cnblogs.com/SouthSea/archive/2008/11/18/1335812.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值