博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript的类、委托、事件
阅读量:5300 次
发布时间:2019-06-14

本文共 2157 字,大约阅读时间需要 7 分钟。

javascript中的类:

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方法加一个参数,让它具有委托的功能。

 

委托
        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中的事件

事件
        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一样的。

 

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

转载于:https://www.cnblogs.com/BlogNetSpace/p/1501245.html

你可能感兴趣的文章
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>