今天有人在群里问为何给Number用extend扩展的时候总是出错,我记得前几天阅读Moo的源代码时好像发现Number好像是只能用implement来进行扩展,而extend似乎是给Function扩展用的,于是乎查了一下官方文档
http://mootools.net/docs/core/Core/Core
Type method: extend
Adds one or more functions to the type. These are static functions that accept for example other types to parse them into the type, or other utility functions that belong to the certain type.
Syntax:
myType.extend(name, method);
or
myType.extend(methods);
Arguments:
name - (string) The method name.
method - (function) The method function.
or
methods - (object) An object with key-value pairs. The key is the method name, the value is the method function.
Returns:
(object) The type.
Examples:
RegExp.extend('from', function(regexp, flags){
return new RegExp(regexp, flags);
});
Number.extend('parseCurrency', function(currency){
// takes a string and transforms it into a number to
// do certain calculations
});
看到没,这是官方的原文,我测试了一下这段示例,运行结果是错误的,提示说:.parseCurrency is not a function
下边是我的测试代码:
Number.extend('parseCurrency', function(currency){
alert(currency);
});
(1).parseCurrency('ff');
出错提示是:
(1).parseCurrency is not a function
[在這個錯誤中斷] (1).parseCurrency('ff');
通过这个错误就可以知道了,parseCurrency 并非是一个function,于是不死心再次阅读Moo的源码,发现Number确实只能用implement扩展.
由此可见官方的文档是有错漏的.
尽信书不如无书,希望初学Moo的朋友注意一下,不要被其误导了!