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学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 Javascript
jQuery oLoader实现的加载图片和页面效果
Mar 14 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
js Canvas绘制圆形时钟教程
Feb 06 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 jQuery
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
vue下的@change事件的实现
Oct 25 Javascript
react PropTypes校验传递的值操作示例
Apr 28 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 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
杏林同学录(七)
2006/10/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Django自定义认证方式用法示例
2017/06/23 Python
python实现Floyd算法
2018/01/03 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
高级工程师岗位职责
2013/12/15 职场文书
机械个人求职信范文
2014/01/24 职场文书
团委工作总结2015
2015/04/02 职场文书
运动会3000米加油稿
2015/07/21 职场文书
mysql中关键词exists的用法实例详解
2022/06/10 MySQL