Mootools中使用extend和implement给你的函数扩展功能或方法

2023-12-14 09:18

本文主要是介绍Mootools中使用extend和implement给你的函数扩展功能或方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  当然了,所谓的给函数扩展功能或方法指的是不修改原函数的前提下.

很多人都知道Mootools面向对象的机制不错,不过多数人都把面向对象理解错了,认为面向对象就是类,其实不然,面向对象的范围是非常广的.

那么我的这篇文章实际上就是面向对象的一种应用,只不过这个对象是一个function,而并非class.

//给指定Function扩展新的方法或属性
var Fun=function(){
  alert('a')
};
Fun.extend({
  aa:function(){
    alert('b');
  }
});
Fun();
Fun.aa();

在上边这段代码中函数Fun唯一的用途就是用来输出a这个字符,此时我们把这个函数理解成是一个对象,那如果我们要给这个函数增加一个新的方法,让他除了能输出a之外还能输出b

因此我就是用了extend对Fun这个对象进行了一次方法扩展,注意扩展之后的方法调用的时候会略有不同.

下边的例子同时演示了如何扩展属性和方法.

var arr=[];
var Fun=function(){
arr=[1,2];
};
Fun.extend({
len:function(){//给Fun扩展属性
return arr.length;
},
add:function(val){//给Fun扩展方法
arr.push(val);
}
});

var a=Fun.len(arr);
alert(a+'|'+arr);//此时输出:0|

Fun();//调用此函数给arr赋值

var a=Fun.len();
alert(a+'|'+arr);//此时输出:2|1,2

Fun.add('新的');

var a=Fun.len();
alert(a+'|'+arr);//此时输出:3|1,2,新的

Fun.add(['a','b','c']);

var a=Fun.len();
alert(a+'|'+arr);//此时输出:4|1,2,新的,a,b,c

len是我扩展的属性,用来取得arr的length数,而add则是一个方法,用来给arr这个array添加新的值

implement是用来给所有的函数扩展方法的,其实很好理解,我们已经知道在Mootools中有pass,bind,delay等等的方法,这些方法都是Mootools为我们预定义的

但是如果你在实际开发过程中发现他为我们预定义的方法不能满足我们的需求,此时怎么办呢,很简单,只要自己扩展就好了,看下边:

//扩展新的Function
var a=function(){};
var b=function(){};
Function.implement({
alert:function(msg){//直接alert输出内容
alert(msg);
},
output:function(msg){//firebug的控制台会输出内容,IE会报错
console.log(msg);
}
});
a.alert('1');
a.output('2');
b.output('3');


看过这篇文章之后您是否对Mootools的面向对象有了一个新的认识呢?

这篇关于Mootools中使用extend和implement给你的函数扩展功能或方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491959

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.