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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
jQuery 全选效果实现代码
Mar 23 Javascript
编写高性能的JavaScript 脚本的加载与执行
Apr 19 Javascript
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
js获取当月最后一天实例代码
Nov 19 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python实现大文本文件分割
2019/07/22 Python
python实现简易淘宝购物
2019/11/22 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Django中的session用法详解
2020/03/09 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
退休感言
2014/01/28 职场文书
部队党性分析材料
2014/02/16 职场文书
理财学专业自荐书
2014/06/28 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
办公室卫生管理制度
2015/08/04 职场文书
施工现场安全管理制度
2015/08/05 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL