common Class
基础方法
src\base\base.js:35
Methods
conf
conf
(
-
name
-
conf
-
[mode='merge']
-
[deep]
)
SmartJS的配置公共参数方法
Parameters:
name | type | flag | description |
---|---|---|---|
name
| String | 参数名 | |
conf
| Object | 参数 | |
[mode='merge'] |
String | optional | 参数设置模式,默认
|
[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:
name | type | flag | description |
---|---|---|---|
content
| String | Function | 编码内容或者是获取编码内容打的方法 | |
type
| String | 编码类型;
|
Returns:
编码后的内容
format
format
(
-
tmpl
-
data
-
encodeType
)
String
文本格式化方法
Parameters:
name | type | flag | description |
---|---|---|---|
tmpl
| String | 模板内容 | |
data
| Object | 填充的数据对象 | |
encodeType
| String | 编码类型,html,url |
Returns:
格式化后的文本内容
getObj
getObj
(
-
target
-
ns
-
[root]
)
获取对象的属性或方法,支持命名空间方式获取
Parameters:
name | type | flag | description |
---|---|---|---|
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:
name | type | flag | description |
---|---|---|---|
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:
name | type | flag | description |
---|---|---|---|
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:
name | type | flag | description |
---|---|---|---|
deep
| Boolean | 是否深度合并 | |
合并的对象集合
| Array | ||
[isMix] |
Boolean | optional | 是否为mix模式,默认是merge模式 |
[exclude] |
Array | Function | optional | 排除合并的设置 |
Returns:
返回合并对象
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:
name | type | flag | description |
---|---|---|---|
[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:
name | type | flag | description |
---|---|---|---|
[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
SmartJS避免混淆的方法; SmartJS默认在使用window._smartJS;同时会判断window.st是否被占用,如果没占用的话,会同样映射到window.st; noConflict接受一个字符名(window下)或者对象,smartjs会同步到这个对象
Parameters:
name | type | flag | description |
---|---|---|---|
extreme
| String | Object | 扩展名或者是对象 |
Returns:
smartJS对象
Example:
//与jquery的$合并
window._smartJS.noConflict($);
expect($.__smartJs).toBeDefined
setObj
setObj
(
-
target
-
ns
-
value
-
[mode]
-
[root]
)
设置对象的属性或方法,支持命名空间方式设置
Parameters:
name | type | flag | description |
---|---|---|---|
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
)
将argument转换成array
Parameters:
name | type | flag | description |
---|---|---|---|
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');