开发者社区> 醉意人间> 正文

javascript学习感触

简介: 从开始接触javascript到现在也有2个星期了吧,有很多感触,在这里分享些许。 javascript虽然是面向对象的,但是在我前面的几篇“混乱中”,我也已经谈了自己的想法,我开始甚至抵触过这个语言,为什么这个语言也居然宣称自己是面向对象的呢?学习一个新的东西开始的时候都是很痛苦的,尤其是已经存在的一些概念或认识跟这个要学的东西向抵触的时候?有放弃的冲动和想法。
+关注继续查看
从开始接触javascript到现在也有2个星期了吧,有很多感触,在这里分享些许。
javascript虽然是面向对象的,但是在我前面的几篇“混乱中”,我也已经谈了自己的想法,我开始甚至抵触过这个语言,为什么这个语言也居然宣称自己是面向对象的呢?学习一个新的东西开始的时候都是很痛苦的,尤其是已经存在的一些概念或认识跟这个要学的东西向抵触的时候?有放弃的冲动和想法。
我是一个不轻易放弃的人,即便是暂时接受不了,可能会放下一段时间,然后重新开始,也许这是我这些年一直惯用的方式,反复学习,断断续续的坚持,享受过程的折磨,每一次都希望比上一次进步一点,直到爱上他为止。
爱上这个词我说的有点过了,折磨这个词,是我从“老鹰重生”这个寓言故事中摘出来的,我很喜欢这个预言故事,寓言故事往往是鼓舞人心的,给人力量的。但是这则预言,很真实,尤其是在这个社会中,要得到自己想要的东西,和学到自己喜欢的东西那要付出代价,经历一番痛苦。过程的艰辛会让人记得更牢,更牢。
要没做,要么不做,这是我对自己的承诺,尽最大努力做好。
javavascript中的匿名函数,原型,闭包,我觉得是非常重要的东西,如果将这些掌握了,那么javascript的主要内容已经没有问题了,然后就是CSS的内容了。
每一门学科或者技术或者其他区别于其他的第一点就是有自己的专业术语,专有的领域(现在很多都是综合性)还有就是解决问题的方法.
对于专业术语,先认真学习,然后用自己的话去解释,所谓先认识,后解释,然后应用,应用的过程就是用它自己的一些方法在它的一些领域中解决一些问题。
在网络盛行的今天,搜索引擎发挥了很大的作用,让每个人都能快速的获取知识和解决问题,如何快速的获取以及如何快速的解决问题,这对一个人来说应该是一种新的能力,而我一直在思考。
我总是这么的罗嗦,现在言归正传,说下我刚才提到的那几个吧。 
匿名函数
匿名函数就是一个没有具体名字的函数,还是通过例子去看吧。
在javascript中我们一般用下面的方式声明函数:
1,function double(x) { return 2 * x; }
2,var double = new Function('x', 'return 2 * x;');
3,var double = function(x) { return 2* x; }

 





从这三种方式可以看出,都有一个名称可以定位该函数,而匿名函数的声明跟这个是有区别的,如下:
(function(x, y){ alert(x + y); })(2, 3);
 
匿名函数可以最为自执行函数和回调函数中(如果用过JQuery和其他框架,可以看到很多)

闭包

闭包是一个陌生的概念,用我自己的话就是在一个函数中又定义一个函数,并且将这个函数变量或者名称返回(当然也可以不返回,通过this指定),返回后原来的函数所占的资源并不释放,可以说是激活状态,比较拗口,看下面的例子:
function f1(){ 
    var n=999;
function f2()
{     
  alert(n);  
}   
 return f2;  
 }  
 var result=f1();  
result(); // 999

 

 
从这个函数就可以看到,在f1中,我们又定义了一个f2,然后将f2返回,返回后仍然可以访问定义在f1中的变量n,这也是闭包的一个作用,访问内部参数,如果里面对这个变量做了变化,那么访问的是这个变量的最终值。 

function buildList(list) { var result = []; for (var i = 0; i < list.length; i++) { var item = 'item' + list[i]; result.push(function () { alert(item + ' ' + list[i]) }); } return result; } function testList() { var fnlist = buildList([1, 2, 3]); for (var j = 0; j < fnlist.length; j++) { fnlist[j](); } } testList();
 上面的这个就是闭包的一个用法,当调用fnlist[j]()的时候弹出的都是item undefined,原因就是i在返回后已经变成了3,而list[3]是不存在的。 
原型

原型其本质是一个对象,普通的实例对象没有本质上的区别。可以包含特定类型的所有实例的共享属性或者方法,每个JavaScript函数都有prototype属性,这个属性引用了一个对象,这个对象就是原型对象。原型对象初始化的时候是空的,我们可以在里面自定义任何属性和方法,这些方法和属性都将被该构造函数所创建的对象继承。
下面的例子很直观的说明了这点。
function User(name,age){//构造方法 this.name = name;//对象属性 this.age = age;} User.prototype.addr = '湖北武汉';//在原型中添加属性 User.prototype.show = function(){//在原型中添加方法 alert(this.name+'|'+this.age); };var user1 = new User('ZXC',22);//创建实例 var user2 = new User('CXZ',21);user1.show();//调用show()方法user2.show(); alert(user1.show == user2.show);//返回 true 说明show方法是共享的alert(user1.addr);//'湖北武汉' alert(user2.addr);//'湖北武汉' 
 通过原型,我们可以动态的扩展一个对象的功能,很多框架的功能,不知道是不是通过这种方式来呢?
这些资料很多都是来自网上,感谢分享的人,同时将这些地址分享如下:
http://bonsaiden.github.com/JavaScript-Garden/
http://www.cnblogs.com/jsk540/archive/2010/10/26/1861630.html
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html
http://www.cnblogs.com/chaofan/archive/2009/12/29/1635133.html
http://kb.cnblogs.com/page/144404/
http://blog.csdn.net/helloworl/article/details/7883507
http://www.cnblogs.com/rainman/archive/2009/05/04/1448899.html#m1

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Validform验证修改密码
前端页面、验证原密码后台代码、提交表单js代码、提交表单后台代码。
4 0
利用汇编挖掘编程语言的本质
虽然现在基本不会直接使用汇编来开发程序,但是汇编仍然有学习研究的价值,可以利用汇编语来挖掘编程语言的本质。
6 0
DataTables单纯的分页 不排序 没有默认搜索
憋了好几天看了中文和英文的文档,终于把分页搞出来了,先前一直纠结这个页码和页容量怎么传的,其实不用纠结这个,会自动识别。
9 0
Bootstrap-Datatables Java后台分页 批量删除 自定义搜索
先上一张效果图、自定义搜索Java代码、批量删除的代码。
6 0
广电有线数字电视网络安全规划实践
当前广电有线电视快速发展,这得益于有线网络覆盖范围以及功能内容的全面升级。在如此背景下,有线网络安全规划实践就成为关键,它希望深层次打击破坏网络而获取非法利益的等违法行为,为有线电视创新优化发展创造有利契机。本文中就首先概述了网络基本架构相关概述,对网络基本架构中所存在的问题进行分析,最后结合有线电视网络的内部公共区域、系统区域、电视信息区域以及内部互联区域的安全规划展开全面论述。
9 0
新手利用阿里云服务器快速搭建网站指南
本篇通过简单明了的语言,以及简单的步骤,来介绍如何通过阿里云云服务器来快速搭建自己的网站。
45 0
初识阿里云ESC服务器
通过学习使用阿里云ESC服务器,对云服务器初步认识。
10 0
ECS实验体验
ECS的简单使用体验报告
9 0
Web 进阶——Apache
Web 进阶——Apache
4 0
iframe通信案例
vue项目中使用iframe通信的代码示例
6 0
+关注
醉意人间
喜欢GIS,喜欢将GIS技术在中国推广
412
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载