ECMAScript 创建自己的js类库


Posted in Javascript onNovember 22, 2012

ECMAScript中最有意思,最强大的地方在于函数。最进在完善自己的js类库的时候发现我们经常在用函数,但真的很少有人懂得ECMAScript函数功能。
1:什么是函数?

ECMAScript函数其实就是对象,每个函数都是Function类型的实例而且有属性和方法,由于函数是对象,函数名其实就是指向函数对象的指针,不会与某个函数绑定。
2:创建函数的方法

(1):function Person(name) 
 { 


return name; 

 } 
(2):var Person=function(name) 

{ 

return name; 

} 
(3):var Person=new function(“name”,”return name”);(不推荐使用,ECMAScript会解析两次所以不推荐使用)

3:函数声明和函数表达式的不同

ECMAScript对函数声明和函数表达式的解析并非一视同仁,解析器会先读取函数声明,并使其在任何代码前都可用。

例:

assert(false); 
function assert(value, msg) { 
if (!value) { 
alert (msg || (value + " does not equal true")); 
} 
}

ECMAScript 创建自己的js类库 
函数表达式为执行到这一行才解析器才会解析
如:assert(false); 
var assert= function (value, msg) { 
if (!value) { 
alert (msg || (value + " does not equal true")); 
} 
}

ECMAScript 创建自己的js类库 
4:理解this属性
this 属性是我们经常用的属性,其行为与Java,C#,PHP大致类似。
如:window.name='用未来思考现在'; 
window.name = "用未思考现在; 
showName(); 
function showName() { 
alert(this.name); 
}

ECMAScript 创建自己的js类库 
5:创建自己的类库插件
简单的介绍了下函数,对于理解函数这些内容远远不够,例如构造函数模式,原形模式,原形链等等都是要花很多时间去理解。
创建类
var Class = function () { 
var extclass = function () { 
//接收属性传过来的参数 
this.init.apply(this, arguments); 
} 
//给类添加自定义属性 
extclass.prototype.init = function () { }; 
//给prototypr定义别名? 
extclass.fn = extclass.prototype; 
//定义类的别名? 
extclass.fn.parent = extclass; 
//给类添加属性 
extclass.extend = function (obj) { 
var extended = obj.extended; 
for (var i in obj) { 
extclass.fn[i] = obj[i]; 
} 
if (extended) extended(extclass); 
}; 
//给实例添加属性 
extclass.include = function (obj) { 
var included = obj.included; 
for (var i in obj) { 
extclass.fn[i] = obj[i]; 
} 
if (included) included(extclass); 
} 
return extclass; 
}

类库大致的框架构建完成,这样我们创建类可以调用extended方法,创建实例可以调用include方法。下一章节会在此基础上扩展更多功能,基于原型给“类”添加继承。
Javascript 相关文章推荐
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Jun 02 Javascript
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
使用VUE+iView+.Net Core上传图片的方法示例
Jan 04 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
elementUI select组件使用及注意事项详解
May 29 Javascript
js实现验证码功能
Jul 24 Javascript
javascript克隆对象深度介绍
Nov 20 #Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 #Javascript
JS中toFixed()方法引起的问题如何解决
Nov 20 #Javascript
JavaScript实现拼音排序的方法
Nov 20 #Javascript
Js+Flash实现访问剪切板操作
Nov 20 #Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
Nov 19 #Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 #Javascript
You might like
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
python 的列表遍历删除实现代码
2020/04/12 Python
小小聊天室Python代码实现
2016/08/17 Python
selenium+python环境配置教程详解
2019/05/28 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python无损压缩图片的示例代码
2020/08/06 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
协议书怎么写
2014/04/21 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
飞越疯人院观后感
2015/06/09 职场文书
出生证明格式
2015/06/15 职场文书
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python