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 相关文章推荐
JS的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
jQuery实现提示密码强度的代码
Jul 15 Javascript
js实现鼠标左右移动,图片也跟着移动效果
Jan 25 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
Vue v-text指令简单使用方法示例
Sep 19 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 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
5.PHP的其他功能
2006/10/09 PHP
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
php实现倒计时效果
2015/12/19 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Django添加sitemap的方法示例
2018/08/06 Python
Python any()函数的使用方法
2019/10/28 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
struct与class的区别
2014/02/03 面试题
舞蹈教育学专业求职信
2014/06/29 职场文书
授权委托书(完整版)
2014/09/10 职场文书
机关作风建设工作总结
2014/10/23 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
python playwright 自动等待和断言详解
2021/11/27 Python
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
关于vue-router-link选择样式设置
2022/04/30 Vue.js
pandas中pd.groupby()的用法详解
2022/06/16 Python