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 相关文章推荐
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
21个JavaScript事件(Events)属性汇总
Dec 02 Javascript
jQuery选择器源码解读(二):select方法
Mar 31 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
Sep 23 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
js实现手表表盘时钟与圆周运动
Sep 18 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
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
PHP实现微信退款功能
2018/10/02 PHP
FCK调用方法..
2006/12/21 Javascript
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
Python 开发Activex组件方法
2009/11/08 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Django实现表单验证
2018/09/08 Python
简单谈谈python基本数据类型
2018/09/26 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
退货证明模板
2015/06/23 职场文书
行政复议决定书
2015/06/24 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
详解python网络进程
2021/06/15 Python