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 相关文章推荐
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
js中的事件捕捉模型与冒泡模型实例分析
Jan 10 Javascript
JS扩展方法实例分析
Apr 15 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
详解vue跨组件通信的几种方法
Jun 15 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
原生js实现滑块区间组件
Jan 20 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中的正则表达式以及模式匹配
2013/06/19 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
Python FTP操作类代码分享
2014/05/13 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
幸福家庭事迹材料
2014/02/03 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
职工小家建设活动方案
2014/08/25 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
就业推荐表导师评语
2014/12/31 职场文书
2015暑假假期总结
2015/07/13 职场文书