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居然支持中文(unicode)编程!
Apr 12 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 Javascript
jQuery实现表单步骤流程导航代码分享
Aug 28 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 Javascript
package.json文件配置详解
Jun 15 Javascript
关于页面刷新vuex数据消失问题解决方案
Jul 03 Javascript
JS模拟超市简易收银台小程序代码解析
Aug 18 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 Javascript
javascrpt密码强度校验函数详解
Mar 18 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 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 curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python入门篇之对象类型
2014/10/17 Python
python采集百度百科的方法
2015/06/05 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
Python爬豆瓣电影实例
2018/02/23 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
简单了解python中的与或非运算
2019/09/18 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
GWT的应用有哪两种部署模式
2012/12/21 面试题
酒店实习个人鉴定
2013/12/07 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
报名委托书
2015/01/29 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
浅谈Python中的正则表达式
2021/06/28 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL