基础方法

Defined in: src\base\base.js:35
Module: Base

Methods

conf

conf
(
  • name
  • conf
  • [mode='merge']
  • [deep]
)

Defined in src\base\base.js:40

SmartJS的配置公共参数方法

Parameters:

nametypeflagdescription
name String

参数名

conf Object

参数

[mode='merge'] String optional

参数设置模式,默认

                  1. merge,合并模式;
                  2. mix,混入模式;只应用原来没有的设置
                  3. replace,完全替换原来设置
[deep] Boolean optional

是否深度拷贝拷贝,当mode为'merge'和'mix'有效

Example:

           st.conf('testConfig',{
                name : 'test'
           });
           var config = st.conf('testConfig');
           expect(config).toBeDefined
           expect(config.name).toBe('test');

           //扩展
           st.conf('testConfig',{
                type : 'config'
           });

           config = st.conf('testConfig');
           expect(config.name).toBe('test');
           expect(config.type).toBe('config');

encode

encode
(
  • content
  • type
)
String

编码方法

Parameters:

nametypeflagdescription
content String | Function

编码内容或者是获取编码内容打的方法

type String

编码类型;

                    1. html:html编码
                    2. url:url编码

Returns:

[String]

编码后的内容

format

format
(
  • tmpl
  • data
  • encodeType
)
String

文本格式化方法

Parameters:

nametypeflagdescription
tmpl String

模板内容

data Object

填充的数据对象

encodeType String

编码类型,html,url

Returns:

[String]

格式化后的文本内容

getObj

getObj
(
  • target
  • ns
  • [root]
)

获取对象的属性或方法,支持命名空间方式获取

Parameters:

nametypeflagdescription
target Object

目标对象

ns String

属性名称或者相对于target的路径,使用"."进行分割

[root] Boolean optional

是否从根开始,默认从target子开始;从根开始则忽略ns的第一级

Returns:

[object] 返回获取的属性或者方法

Example:

            var user1 = {
                name: "user",
                project1: {
                    level:2,
                    role: "sa"
                },
                friends: ['user2','user3']
            };

            expect(st.getObj(user1, "name")).toBe('user');
            expect(st.getObj(user1, "project1.level")).toBe(2);
            expect(st.getObj(user1, "friends[1]")).toBe('user3');
            expect(st.getObj(user1, "a")).toBe(null);

injectFn

injectFn
(
  • target
  • name
  • fn
  • [before]
  • [stopOnFalse]
)

在目标对象方法中注入方法,返回结果

Parameters:

nametypeflagdescription
target Object

注入的目标对象

name String

注入的方法名

fn Function

注入方法

[before] Boolean optional

是否前置注入,默认后置

[stopOnFalse] Boolean optional

是否开启返回值为false停止后续执行

Example:

            var result = [],
                target = {
                    test: function(arr) {
                        arr.push("test");
                    }
                };


            function fn(arr) {
                arr.push("inject");
            }

            //向target注入方法fn
            st.injectFn(target, "test", fn);

            target.test(result);

            //结果执行注入函数fn
            expect(result + '').toBe('test,inject');
            var result = [],
                target = {
                    test: function(arr) {
                        arr.push("test");
                    }
                };


            function fn(arr) {
                arr.push("inject");
            }

            st.injectFn(target, "test", fn, true);

            target.test(result);
            expect(result + '').toBe('inject,test');
            var result = [],
                target = {
                    test: function(arr) {
                        arr.push("test");

                    }
                };


            function fn(arr) {
                arr.push("inject");
                return false;
            }

            st.injectFn(target, "test", fn, true, true);

            target.test(result);
            expect(result + '').toBe('inject');

mergeFn

mergeFn
(
  • fn
  • mergeFn
  • [stopOnFalse]
)

合并方法,返回结果

Parameters:

nametypeflagdescription
fn Function

目标方法

mergeFn Function

合并方法,合并的方法始终在后执行

[stopOnFalse] Boolean optional

是否开启返回值为false停止后续执行

Returns:

[function] 返回合并之后的新方法

Example:

            var result = [],
                fn1, fn2, fn3, fn4;

            fn1 = function(arr) {
                arr.push("fn1");
            }

            fn2 = function(arr) {
                arr.push("fn2");
            }

            fn3 = st.mergeFn(fn1, fn2);

            fn3(result);
            expect(result + '').toBe('fn1,fn2');
            var result = [],
                fn1, fn2, fn3;

            //合并方法1
            fn1 = function(arr) {
                    arr.push("fn1");
                    return false;
                }
                //合并方法2
            fn2 = function(arr) {
                arr.push("fn2");
            }

            //将fn1和fn2合并成一个新方法fn3,并开启stopOnFalse
            fn3 = st.mergeFn(fn1, fn2, true);

            fn3(result);
            //最终因为fn1执行返回false,fn2不执行,
            expect(result + '').toBe('fn1');

mergeMulti

mergeMulti
(
  • deep
  • 合并的对象集合
  • [isMix]
  • [exclude]
)
Object

合并多个对象

Parameters:

nametypeflagdescription
deep Boolean

是否深度合并

合并的对象集合 Array
[isMix] Boolean optional

是否为mix模式,默认是merge模式

[exclude] Array | Function optional

排除合并的设置

Returns:

[Object]

返回合并对象

Example:

            var obj0 = {
                name: 'obj0'
            },
            obj1 = {
                name: 'obj1',
                age: 10
            },
            obj2 = {
                name: 'obj2',
                sex : 'male'
            }

            //使用mix方式合并多个对象
            var mObj = st.mergeMulti(true,[obj0,obj1,obj2],true,["age"]);

            expect(mObj.age).toBeUndefined
            expect(mObj.name).toBe("obj0");
            expect(mObj.sex).toBe("male");

mergeObj

mergeObj
(
  • [deep]
  • obj
  • defObj
  • [exclude]
  • [isMix]
)

合并默认数据方法,将obj中不空的内容从defObj中复制

Parameters:

nametypeflagdescription
[deep] Boolean optional

是否深度合并

obj Function

合并对象

defObj Function

默认对象

[exclude] Array | Function optional

排除合并的设置

[isMix] Boolean optional

排除合并的设置

Returns:

[function] 返回合并之后的对象;如obj不为空时返回obj,否则返回新对象

mix

mix
(
  • [deep]
  • obj
  • defObj
  • [exclude]
)

合并默认数据方法,将obj中不空的内容从defObj中复制

Parameters:

nametypeflagdescription
[deep] Number optional

是否深度合并

obj Function

合并对象

defObj Function

默认对象

[exclude] Array | Function optional

排除合并的设置

Returns:

[function] 返回合并之后的对象;如obj不为空时返回obj,否则返回新对象

Example:

            var person = {
                name: "piter",
                age: 10,
                child: [{
                    name: 'lily'
                }]
            };

            var obj = {
                name: 'a'
            };

            st.mix(true, obj, person);

            expect(obj.child).toBeDefined
            expect(obj.age).toBe(10);
            expect(obj.name).toBe('a');

            //obj.child[0].name = 'tracy';
            //expect(person.child[0].name).toBe('lily');
            var obj = {
                name: 'a',
                age: 10,
                project: {
                    name: "project1",
                    state: 'testing'
                }
            };

            var mObj = st.mix(true, {
                age: 20
            }, obj, ["age", "project.state"]);

            expect(mObj.age).toBe(20);
            expect(mObj.name).toBe("a");
            expect(mObj.project.state).toBeUndefined;

noConflict

noConflict
(
  • extreme
)
_smartJS

Defined in src\base\base.js:16

SmartJS避免混淆的方法; SmartJS默认在使用window._smartJS;同时会判断window.st是否被占用,如果没占用的话,会同样映射到window.st; noConflict接受一个字符名(window下)或者对象,smartjs会同步到这个对象

Parameters:

nametypeflagdescription
extreme String | Object

扩展名或者是对象

Returns:

[_smartJS]

smartJS对象

Example:

            //与jquery的$合并
            window._smartJS.noConflict($);
            expect($.__smartJs).toBeDefined

setObj

setObj
(
  • target
  • ns
  • value
  • [mode]
  • [root]
)

设置对象的属性或方法,支持命名空间方式设置

Parameters:

nametypeflagdescription
target Object

目标对象

ns String

属性名称或者相对于target的路径,使用"."进行分割

value Object

设置的值

[mode] String optional

值设置的方式,目标对象和值都为object类型有效,默认为替换;"mix" : 混入合并默认值;"merge" : 复制合并值;

[root] Boolean optional

是否从根开始,默认从target子开始;从根开始则忽略ns的第一级

Returns:

[object] 返回获取的属性或者方法

Example:

            var user1 = {
                name: "user",
                project1: {
                    role: "sa"
                },
                friends: ['user2']
            };

            //简单赋值
            st.setObj(user1, "age", 10);

            //子对象赋值
            st.setObj(user1, "project1.level", 1);

            //设置数组
            st.setObj(user1, "friends[1]", 'user3');

            //构建不存在的project2对象
            st.setObj(user1, "project2.role", 'pm');

            expect(user1.age).toBe(10);
            expect(user1.project1.level).toBe(1);
            expect(user1.friends.length).toBe(2);
            expect(user1.project2).toBeDefined
            expect(user1.project2.role).toBe("pm");
            var user1 = {
                name: "user",
                project1: {
                    role: "sa"
                },
                friends: ['user2']
            };

            st.setObj(user1, "user1.age", 20, true);

            expect(user1.age).toBe(20);
            var user1 = {
                name: "user",
                project1: {
                    role: "sa"
                },
                friends: ['user2']
            };

            st.setObj(user1, "project1", {
                level: 2,
                status: 'coding'
            }, 'merge');

            expect(user1.project1.level).toBe(2);
            expect(user1.project1.status).toBe('coding');
            var user1 = {
                name: "user",
                project1: {
                    role: "sa"
                },
                friends: ['user2']
            };

            st.setObj(user1, "user1.project1", {
                level: 3,
                status: 'testing',
                module: 'core'
            }, 'mix', true);

            expect(user1.project1.level).toBe(3);
            expect(user1.project1.status).toBe('testing');
            expect(user1.project1.module).toBe('core');

sliceArgs

sliceArgs
(
  • args
  • [start
)

Defined in src\base\base.js:72

将argument转换成array

Parameters:

nametypeflagdescription
args Function

argument对象

[start Number

= 0] 开始位置

Returns:

[array] 返回转换的数组

Example:

            function test {
                return st.sliceArgs(arguments, 1);
            }
            expect(test(1, 2, 3, 4).join(',')).toBe('2,3,4');
Top