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点击弹出下拉菜单的小例子
Aug 01 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
javascript表单事件处理方法详解
May 15 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
jQuery实现弹幕效果
Feb 17 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
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巧获服务器端信息
2006/12/06 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
[01:46]新英雄登场
2019/09/10 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
django url到views参数传递的实例
2019/07/19 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
医学生职业规划范文
2014/01/05 职场文书
求职面试个人自我评价
2014/02/28 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
党员创先争优活动总结
2014/05/04 职场文书
师范毕业生求职信
2014/07/11 职场文书
租房协议书范例
2014/10/14 职场文书
党小组考察意见
2015/06/02 职场文书
基层工作经历证明
2015/06/19 职场文书
判断Python中的Nonetype类型
2021/05/25 Python