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 DOM 学习第三章 内容表格
Feb 19 Javascript
三级下拉菜单的js实现代码
May 23 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
JS二维数组的定义说明
Mar 03 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
基于JavaScript实现添加到购物车效果附源码下载
Aug 22 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
vue 挂载路由到头部导航的方法
Nov 13 Javascript
基于Vue的移动端图片裁剪组件功能
Nov 28 Javascript
基于Vue中的父子传值问题解决
Jul 27 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模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
28个JS验证函数收集
2010/03/02 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
澳大利亚相机之家:Camera House
2017/11/30 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
房地产广告词大全
2014/03/19 职场文书
解除劳动合同协议书
2014/04/14 职场文书
银行进社区活动总结
2014/07/07 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
乌镇导游词
2015/02/02 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
辞职信格式模板
2015/02/27 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
会计入职心得体会
2016/01/22 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang