javascript中常用编程知识


Posted in Javascript onApril 08, 2013

1.null 与 undefined

* 从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。
* 一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。
* JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。
* null为空对象,注意与空的对象({})的区别。
简单来说,对于所有变量,只要声明后还没有指定初始值 ,那么他就是undefined,如果是Object类型用来表示空引用的概念,那么就是用null来表示。

2.if 表达式

* Null总是为假(false)
* Undefined总是为假(false)
* Number+0,-0 或是 NaN 的时候为假,其它值为真
* String空字符串的时候为假,其它值为真
* Object总是为真(true)

3.Array

JavaScript 中的数组(Array)和通常的编程语言,如 Java 或是 C/C++ 中的有很大不同。在 JavaScript 中的对象就是一个无序的关联数组,而 Array 正是利用 JavaScript 中对象的这种特性来实现的。在 JavaScript 中,Array 其实就是一个对象,只不过它的属性名是整数,另外有许多额外的属性(如 length)和方法(如 splice)等方便地操作数组。

4.new 运算符

JavaScript 中并没有 Java 中的类(class)的概念,而是采用构造器(constructor)的方式来创建对象。在 new 表达式中使用构造器就可以创建新的对象。由构造器创建出来的对象有一个隐含的引用指向该构造器的 prototype 。

5.prototype

prototype是javascript原型继承的核心概念,大家一定在某个javascript类库里面见过 Array.prototype.push.call()这样的用法,所以归根结底prototype是一个对象。我们可以通过 prototype给native class添加一些有用的方法,也可以通过prototype实现继承。如果对prototype比较感兴趣,可以在ff里面通过__proto__来访 问指定对象的原型链。

6.scope chain

执行上下文(execution context)是 ECMAScript 规范中用来描述 JavaScript 代码执行的抽象概念。所有的 JavaScript 代码都是在某个执行上下文中运行的。在当前执行上下文中调用 function 的时候,会进入一个新的执行上下文。当该 function 调用结束的时候,会返回到原来的执行上下文中。如果 function 调用过程中抛出异常,并没有被捕获的话,有可能从多个执行上下文中退出。在 function 调用过程,也可能调用其它的 function,从而进入新的执行上下文。由此形成一个执行上下文栈。

注:如果对scope chain比较感兴趣,可以在ff里面通过__parent__属性来访问函数的scope chain,比较遗憾的是ff的js引擎SpiderMonkey对这个属性的支持不是很完美,出现内部函数的时候会出错,所以建议用Rhino (http://developer.mozilla.org/en/docs/Rhino)。

注:这里需要提的是注意函数表达式和函数声明对scope chain的影响。

7.closure

闭包也算是js比较常用的特色功能了,一般我们在java里面执行完毕的一个函数,内部变量将全部被回收,但在javascript中,我们可以通过某些方法,使执行完的函数的内部变量依然存在,并且可访问,这样就构成了一个闭包。

当然,什么东西都有两面性,闭包给我们带来好处的时候,也会带来不少的麻烦,比如一个不留神就产生了内存的泄漏,所以我们需要合理的应用这些技术。如果要 深入学习闭包,建议去看几个js library(prototype,jquery,mootools),里面有一些很经典的闭包应用,比如bind方法等,这里就不多赘述。

Javascript 相关文章推荐
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
常用的Javascript数据验证插件
Aug 04 Javascript
javacript获取当前屏幕大小
Jun 04 Javascript
javascript入门之数组[新手必看]
Nov 21 Javascript
JavaScript轻松创建级联函数的方法示例
Feb 10 Javascript
Three.js利用dat.GUI如何简化试验流程详解
Sep 26 Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
通过js示例讲解时间复杂度与空间复杂度
Aug 06 Javascript
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
利用webqq协议使用python登录qq发消息源码参考
Apr 08 #Javascript
setInterval,setTimeout与jquery混用的问题
Apr 08 #Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 #Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
Apr 08 #Javascript
JQueryEasyUI datagrid框架的基本使用
Apr 08 #Javascript
Jquery中使用setInterval和setTimeout的方法
Apr 08 #Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 #Javascript
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
javascript函数定义的几种区别小结
2014/01/06 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python 实现多线程下载视频的代码
2019/11/15 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
工商干部先进事迹
2014/05/14 职场文书
公司任命书模板
2014/06/06 职场文书
大雁塔英文导游词
2015/02/10 职场文书
产品质量保证书范本
2015/02/27 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL