Namespace: M

M

执行fn并把一个新的Wrapper的$()和$$()传递给它 如果没有传递任何参数,则执行M.exportDSL

Classes

BaseClass
Wrapper
Wrapper
Klass

Namespaces

BaseObj
IModuleOption
MObjectUtil
util

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>
目标对象