执行fn并把一个新的Wrapper的$()和$$()传递给它
如果没有传递任何参数,则执行M.exportDSL
Classes
Namespaces
Members
-
<static> global
-
引用当前运行环境的全局对象 浏览器中指向window,node环境下指向global
-
<static> IBase
-
May.js Object的接口
-
<static> IModule
-
module interface
-
<static> Interface :Object
-
Mayjs的interface的原型对象
Type:
- Object
Methods
-
<static> $check(result)
-
依次判断给定的参数是否为false,一旦发现为false立即抛出错误
Parameters:
Name Type Argument Description result
boolean <repeatable>
-
<static> $class(prototype)
-
定义一个Mayjs类,该类自动继承M.BaseClass
Parameters:
Name Type Description prototype
Object 新类的prototype -
<static> $clone(obj, deep) → {Object}
-
clone克隆指定对象,如果对象自己有clone方法,则调用对象自己的clone方法,是M.MObjectUtil.clone的别名
Parameters:
Name Type Argument Default Description obj
Object 被克隆的对象 deep
boolean <optional>
false 是否深度克隆 Returns:
- Type
- Object
-
<static> $dsl(obj, members) → {string}
-
生成将对象的成员导出到当前作用域的代码,该代码可被eval()正确执行, 该函数生成的代码不能在strict模式下运行,是M.util.dsl的别名
Parameters:
Name Type Argument Default Description obj
string <optional>
this members
string <optional>
指定要导入的成员,未指定则导入全部成员,用空格分隔成员名 Returns:
- Type
- string
Example
var Calculator = { add: function(a, b){ return a + b }, sub: function(a, b){ return a - b } } eval(M.util.dsl(Calculator)); add(4, 6); sub(10, 4);
-
<static> $enum(names)
-
声明一个枚举,是M.util.enumeration的别名
Parameters:
Name Type Argument Description names
String <repeatable>
enumeration key Example
var color = M.$enum("BLUE", "RED", "YELLOW"); color.BLUE color.RED color.YELLOW var color = M.$enum({ "BLUE": -1, "RED": 1 })
-
<static> $fn()
-
在函数内部调用函数自身, 代替引用auguments.callee,是M.util.fn的别名
-
<static> $func(arguTypes, fn)
-
给指定方法设定参数的元类型信息
Parameters:
Name Type Description arguTypes
Object | Interface 参数的类型定义 fn
function -
<static> $hasProto(proto, obj) → {boolean}
-
判断proto是否为obj的原型
Parameters:
Name Type Description proto
Object obj
Object Returns:
- Type
- boolean
-
<static> $implement(interface_, obj)
-
把指定协议加入对象的已实现协议元信息中,加入前检查是否支持指定协议
Parameters:
Name Type Description interface_
Interface | Object obj
Object -
<static> $include() → {Object}
-
include module to obj with option
Parameters:
Name Type Description opt.module
Object opt.to
Object opt.option
Object Returns:
- Type
- Object
-
<static> $interface(define, base) → {Interface}
-
创建Interface的快捷方法
Parameters:
Name Type Description define
Object interface define base
Interface base interface Returns:
- Type
- Interface
-
<static> $is(type, obj) → {boolean}
-
判断对象是否为指定类型
Parameters:
Name Type Argument Description type
string | function | undefined obj
Object <repeatable>
Returns:
- Type
- boolean
-
<static> $merge(obj) → {Object}
-
依次合并给定的所有对象到一个新的对象,是M.MObjectUtil.merge的别名
Parameters:
Name Type Argument Description obj
Object <repeatable>
Returns:
new object, merge- Type
- Object
-
<static> $methodize(fn, firstParam, getFirstParam) → {function}
-
包装纯函数,包装时指定纯函数的第一参数,是M.util.methodize的别名
Parameters:
Name Type Argument Default Description fn
function 纯函数 firstParam
Object <optional>
this fn的第一个参数,如果未传递getFirstParam参数 getFirstParam
function <optional>
获取fn的第一个参数的函数,调用时将把firstParam传递给它 Returns:
- Type
- function
-
<static> $mix(obj, src, whitelist) → {Object}
-
copy members from src to obj,是M.MObjectUtil.mix的别名
Parameters:
Name Type Argument Default Description obj
Object [description] src
Object [description] whitelist
String[] <optional>
null 不想被覆盖的成员 Returns:
- Type
- Object
-
<static> $module(obj) → {Object}
-
定义一个module,暂时啥也不干,原样返回传入的对象,标识作用
Parameters:
Name Type Description obj
Object Returns:
- Type
- Object
-
<static> $obj(obj)
-
定义一个对象,该对象的原型为M.BaseObj
Parameters:
Name Type Description obj
Object -
<static> $overload(paramsTypes, fn) → {function}
-
function overload
Parameters:
Name Type Description paramsTypes
Array params types fn
function overload function Returns:
- Type
- function
Example
fn = M.$overload(["string","number"], function(name, age){ return "I'm "+name+ " and I'm " + age + " years old"; }).overload(["string"], function(name){ return "i'm " + name; }); fn.overload(["string", "string"], function(name, interest){ return "I'm " + name + ", and i'm interesting "+ interest; }); fn("lily"); // => "i'm lily" fn("lily", 18); // => "I'm lily and I'm 18 years old" fn("lily", "singing"); //=> "I'm lily, and i'm interesting singing"
-
<static> $overwrite(obj, funcName, overwriter)
-
重写对象的方法,新方法将调用overwriter并把原方法作为第一个参数传递给它,是M.util.overwrite的别名
Parameters:
Name Type Description obj
Object 要重写方法的对象 funcName
string 被重写的方法名 overwriter
function 真正的覆盖函数 Example
var Jim = { sayHi: function(){ return "Hi"} } M.util.overwrite(Jim, "sayHi", function(oldFn, name){ return oldFn.call(this) + ", " + name + "!"; }) Jim.sayHi("Lucy"); => "Hi, Lucy!"
-
<static> $run(fn)
-
运行指定方法,避免在全局作用域下产生全局变量,是M.util.run的别名
Parameters:
Name Type Description fn
function -
<static> $support(interface_, obj, exactly) → {boolean}
-
判断一个对象是否支持指定协议
Parameters:
Name Type Argument Default Description interface_
Interface | Object obj
Object exactly
bool <optional>
false 如果为false且对象的已实现接口元信息中包含了该接口,则不再次检查是否支持 Returns:
- Type
- boolean
-
<static> $wrapper()
-
创建一个新的M.Wrapper并返回它的__DSL__
-
<private, static> _is(type, obj)
-
判断对象是否为指定类型或者符合指定协议
Parameters:
Name Type Description type
function | Object | Interface | string 类型或者协议 obj
Object -
<static> exportDSL(target)
-
将May.js的关键字方法复制到目标对象 如果未传递target参数,则使用eval()导出到当前作用域内
Parameters:
Name Type Argument Description target
Object <optional>
目标对象