欢迎访问 水平网    今天是:2017年11月22日 注册 | 登录 | 订阅 | 收藏
>> 网页编程 >> JavaScript >> Prototype实战教程:Function -> methodize
推荐文章
热点文章
专题
JQuery框架
Prototype.js
HTML5

Prototype实战教程:Function -> methodize

作者:不详,  来源:网络,  阅读:3068,  发布时间:2014-05-23 【放入收藏夹

methodize

someFunction.methodize() -> Function

将原始函数方法化,返回一个新的函数,调用新函数时,实质是将原始函数的第一个参数设置为当前 this 所指向的对象,然后调用原始函数。

methodize 方法对原始函数进行转换,当调用时将原函数中第一个显式的参数设置为 this(当前上下文),成为一个隐含参数。它常用于转换一个函数作为对象或对象原型(prototype 属性)的方法,并简化函数的签名。

样例

// 从一个直接操作目标对象的简单函数开始:
var fn = function(target, foo) { 
	target.value = foo; 
};
var object = {}; 

// 使用原始函数
fn(object, 'bar'); 
object.value 
//-> 'bar' 

// 将 fn 方法化并赋给对象,它就变成对象的一个方法,这时只有一个参数: 
object.fnMethodized = fn.methodize(); 
object.fnMethodized('boom!');
object.value 
//-> 'boom!' 

当然,样例中的用法并不常见。更常见的用法是复制已方法化的函数给对象的原型(prototype 属性), 以便新的方法可以立即在对象实例间共享。在 Prototype 库中,methodize 在 DOM 和事件模块中有着重要的应用:Element.Methods 和 Event.Methods 就是通过方法化后再放入它们原生的 prototype 属性中的,以便在 DOM 节点和事件对象中使用。

译注:想一下 Event.observe('inputId', 'click', handler)$('inputId').observe('click', handler) 是如何转换的,是不是有一种恍然大悟的感觉呢?

var input = document.getElementById('inputId');
input.observe = Event.observe.methodize();
input.observe('click', handler);
TGAS:Prototype教程Function
评论【共有0条评论】查看所有评论
称呼:(*)   邮箱:   QQ:   验证码: 看不清楚?点击刷新验证码