APICloud-端JS库功能API文档(1)
框架简介:
框架基于APICloud官网端API进行扩展和封装,框架完全采用面向对象编程形式,里面包含APP所使用的常用js功能:js类的自定义(类,构造方法,静态方法,继承...),常用工具函数(验证,变量类型,inarray,序列化转JSON...),对象扩展extend方法,迭代器each方法,apicloud常用端对象。
框架功能简要说明:
(1)封装js自定义类的方法,编写Base对象作为所有类的基类(即框架的类都继承与它)。
/**
*
* Base
* @description 用于实现最基础的方法等
*
*/
var
Base = {
/**
* 判断 类与类之间 以及 对象与类之间 关系的基础方法
*
* 情况一(类与类之间):
* 1. 父类.is(子类) -> false
* 2. 子类.is(父类) -> true
*
* 情况二(对象与类之间):
* 1. 父类对象.is(子类) -> false
* 2. 子类对象.is(父类) -> true
*
* @param {Object} type 类名称
* @return {Boolean}
*/
is : function(type){
var
self = this; /**
*
* 调用对象.is(指定对象)
* 判断 调用对象 是否 包含 指定对象(属性)
* 或者也可以这样说
* 判断 指定对象 是否 包含于 调用对象(属性)
*
*/ while ( self ) {
if ( self == type ) return true;
self = self.__type__; // __type__ : (1)Class-引用其父类 (2)New-实例所属的类
} return false;
}
}; var
/**
* 核心方法一: Class
*
* 创建类的函数,用于声明类及继承关系
*
* @param {Object} DefineClass 定义类的对象
* @param {Object} BaseClass 需要继承的类(省略默认为 Base)
* @return {Class} 创建类
*/
Class = function(DefineClass, BaseClass){
// 默认继承 Base 基类
var
parent = BaseClass || Base,
// 创建类的临时函数壳 _class
_class = function(){
// __type__ 属性 : 引用其父类
this.__type__ = parent;
// 复制类的全部定义到当前创建的类
for( var member in DefineClass ) {
this[member] = DefineClass[member];
}
}; _class.prototype = parent; return new _class();
}; var
/**
* 核心方法二: New
*
* 创建对象的函数,用于任意类的对象创建
*
* @param {Object} ClassName 类
* @param {Object} ClassParam 类参数(构造函数需要的参数)
* @return {Object} 创建对象
*/
New = function(ClassName, ClassParam){
// 创建对象的临时函数壳 _new
var
_new = function(){
// __type__ 属性 : 据此可以访问到对象所属的类
this.__type__ = ClassName;
if(ClassName.create && typeof ClassName.create === 'function'){
// 约定 所有 类的构造函数: create !
ClassName.create.apply(this, ClassParam);
}
}; _new.prototype = ClassName; return new _new();
};
(2)全局函数(功能函数的扩充)
/**
*
* ---------------------------
* 创建全局方法 VarToBool |
* @title VarToBool Global |
* @description 空值监测 |
* ---------------------------
*
*/
var
/**
* 判断变量 是否 成立
* [VarToBool 规定 ''|null|undefined|NaN|0|{}|[] 都为false,其他变量均为true]
*
* @param {[object]} data [需要判断的变量]
* @return {[Boolean]}
*/
VarToBool = function(data){
var
_t = typeof data
,hasProp = false
,prop = null
; if( _t === 'object' ) {
for ( prop in data ) {
hasProp = true; // 证明该对象存在属性
break;
}
return hasProp;
} return !!data;
};
/**
*
* ---------------------------
* 创建全局方法 GetType |
* @title GetType Global |
* @description 获取变量类型 |
* ---------------------------
*
*/
var
/**
* 得到变量 类型 字符串
* 'abc' return 'string'
* true return 'boolean'
* 123,NaN,Infinity return 'number'
* [] return 'array'
* {} return 'object'
* function(){} return 'function'
* new Date return 'date'
* new RegExp return 'regexp'
* Math return 'math'
* null return 'null'
* undefined return 'undefined'
*/
GetType = function(data){
var
_t = ''
; return ( (_t = typeof data) == 'object' ? data == null && 'null' || Object.prototype.toString.call(data).slice(8,-1):_t ).toLowerCase();
};
/**
*
* ---------------------------------
* 创建全局方法 SerializeToJson |
* @title SerializeToJson Global |
* @description form序列化转JSON |
* ---------------------------------
*
*/
var
/**
* 将 序列化字符串(a=b&c=d&e=f) 转化 为 json 对象
*/
SerializeToJson = function(paramStr){
var
json = {}
,pairs = null
,i = 0
,pairsLen = 0
,pos = 0
,argname = ''
,value = ''
; if(!paramStr || typeof paramStr !== 'string'){
return {};
}
paramStr = paramStr.replace(/\s*/g,''); // 清除该字符串所有空格 pairs = paramStr.split('&'); pairsLen = pairs.length || 0; for(;i<pairsLen;i++){
pos = pairs[i].indexOf('='); // look for "name=value"
if(pos == -1) continue; // if not found, skip
argname = pairs[i].substring(0,pos);
// extract the name
value = pairs[i].substring(pos + 1);
// extract the value
value = decodeURIComponent(value);
// decode it , if needed
json[argname] = value;
}
return json;
};
/**
*
* ---------------------------------
* 创建全局方法 JsonToSerialize |
* @title JsonToSerialize Global |
* @description JSON转form序列化 |
* ---------------------------------
*
*/
var
/**
* 将 json 对象 转化 为 序列化字符串(a=b&c=d&e=f)
*/
JsonToSerialize = function(json){
var
k = null
,strArr = []
; if(!json || typeof json !== 'object'){
return '';
} for(k in json){
strArr.push(k + '=' + json[k]);
} return strArr.join('&');
};
/**
*
* ---------------------------
* 创建全局方法 InArray |
* @title InArray Global |
* @description |
* ---------------------------
*
*/
var
/**
* @method InArray 检查值是否在数组中
* @param {value,Array} 值,数组
* @return {Boolean} 真返回true,否则返回false
*/
InArray = function(val,arr){
var
i = 0
,l = 0
; if ( GetType(arr) !== 'array' ){
throw '{"code":"1","msg":"数组不存在"}';
} for ( i = 0, l = arr.length; i < l; i++ ) {
if ( arr[i] === val ) {
return true;
}
} return false;
};
(3)App对象
App.extend : 对象扩充
/**
* [extend 对象合并]
* @param {[object]} des [源对象]
* @param {[array|object]} src [对象数组]
* @param {[boolean]} override [是否重写源对象]
* @return {[object]} [返回源对象的引用]
*/
App.extend = function(des, src, override){
var
i = 0
,l = 0
,k = null
,argsLen = arguments.length
; /* 方法重载 开始 */
if ( argsLen === 0 ) {
return {};
} else if ( argsLen === 1 ) {
return arguments[0];
}
/* 方法重载 结束 */ if ( src instanceof Array ) {
for ( i = 0, l = src.length; i < l; i++ ) {
App.extend(des, src[i], override);
}
} else {
for ( k in src ) {
if ( override || !(k in des) ) {
des[k] = src[k];
}
}
} return des;
};
App.each : 迭代器
/**
* [_each 迭代器]
* @param {[array]} obj [待迭代对象数组]
* @param {Function} callback [迭代回调方法]
* @param {[object]} context [环境变量,用作回调函数中this的对象]
* @param {[type]} arg [传入迭代回调函数的参数]
* @throws {jsonstringify} 缺少参数
*/
App.each = function(obj, callback, context, arg){
var
k = null
,argsLen = arguments.length
; /* 方法重载 开始 */
if ( argsLen === 0 || argsLen === 1 ) {
throw '{"code":"1","msg":"缺少参数"}';
}
/* 方法重载 结束 */ if ( !callback || typeof callback !== 'function' ) throw '{"code":"1","msg":"参数类型必须为function"}'; for ( k in obj ) {
callback.call( context||null, k, obj[k], arg );
}
};
(4)App.APICloud对象
在该对象下完全和APICloud端API分类相同:窗口系统、应用管理、网络通信、数据存储、消息事件、设备访问、UI组件、多媒体、WebApp历史、其他。
略。
(5)框架关键字:
基础:Base Class New UseAs VarToBool GetType SerializeToJson JsonToSerialize InArray
对象:App Utils WinSystem AppManage Network DataStorage MsgEvent UI Media History Page
APICloud-端JS库功能API文档(1)的更多相关文章
- layer.js 弹窗组件API文档
基础参数 type title content skin area offset icon btn closeBtn shade shadeClose time id shift maxmin f ...
- 如何制作dll库的API文档,自动生成微软风格的chm文件 Sandcastle Help File Builder 使用方法
当你开发了一个库的时候,就需要给库开发一个api文档,微软提供了一个C#库的自动生成工具.我在使用的过程中记录了相关的信息,以供大家学习和查阅,如有不正之处,欢迎指出. 首先先下载一个软件,下载地址在 ...
- 测试工程师有福啦!一键生成api文档及测试功能
最近发现一个比较好用的插件,可根据api的功能注释说明一键生成文档以及功能demo: swaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用.通过读取JSON 配置显 ...
- 【WebAPI No.4】Swagger实现API文档功能
介绍: Swagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为 ...
- Swagger实现API文档功能
介绍: wagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为什 ...
- 如何查看jsplumb.js的API文档(YUIdoc的基本使用)
目录 一.问题描述 二. 处理方法 三. YUIdoc工具介绍 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...
- 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能
综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...
- 使用jsdoc-toolkit实现JS API文档自动化
在前面的博文中探讨自动化工程问题时,写过基于NodeJS的,使用gulp.grunt的jsdoc插件实现文档自动化.本文探讨基于java环境的自动化实现. 一.Java安装与环境配置 关于Java的安 ...
- 使用jsdoc-toolkit来自动生成js api文档
近来前端组小盆友开发的类库越来越多,很多情况下彼此不知道写了些什么方法,为了更好的合作提高工作效率,找了个比较好的api文档生成方法.使用jsdoc-toolkit来自动生成js api文档. 一. ...
随机推荐
- iOS - 选取相册中iCloud云上图片和视频的处理
关于iOS选取相册中iCloud云上图片和视频 推荐看:TZImagePickerController的源码,这个是一个非常靠谱的相册选择图片视频的库 .当然也可以自己写 如下遇到的问题 工作原因, ...
- PHP文件包含漏洞攻防实战
本文对PHP文件包含漏洞的形成.利用技巧及防范进行了详细分析,并通过一个真实案例演示了如何利用PHP文件包含漏洞对目标网站进行渗透测试,最终成功获取到网站的WebShell. PHP是一种非常流行的W ...
- 【vue基础学习】vue.js开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- WP8.1学习系列(第九章)——透视Pivot开发指南
Windows Phone 8 的 Pivot 控件 2014/6/18 适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows P ...
- SQL SERVER 2008 R2安全配置与防暴力破解
https://blog.csdn.net/enweitech/article/details/49864215 0x00 sql server 2008 权限介绍 在访问sql server 200 ...
- TCP数据传输过程详解
在学习三次握手的时候,我们知道其中有seq.ack两个序列号. 如果不仔细了解,那么可能只知道发回去的时候要加一. 下文将着重介绍,关于序列号的传输过程. 最关键的一句话:序列号为当前端成功发送的数据 ...
- 通俗大白话来理解TCP协议的三次握手和四次分手
通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指 ...
- vue比较模板来跟新数据
一,使用场景: 点击menu通过路由,跳转当前列表,第二次点击menu,希望可以刷新列表: 二,解决思路: 给路由添加时间戳: 三,参考观点: 用 :key管理可复用的元素 模板相同,会造成一种“复用 ...
- Artech的MVC4框架学习——第八章View的呈现
总结:定义在controller中的action方法一般会返回actionResult的对象对请求给予 响应.viewResult是最常见也是最重要的ActionView的一种(p411).view模 ...
- 【转】Navigation Drawer(导航抽屉)
创建一个导航抽屉 创建抽屉布局 初始化抽屉列表 处理导航项选点击事件 监听导航抽屉打开和关闭事件 点击应用图标来打开和关闭导航抽屉 创建一个导航抽屉 导航抽屉是一个位于屏幕左侧边缘用来显示应用程序 ...