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 相关文章推荐
统一接口:为FireFox添加IE的方法和属性的js代码
Mar 25 Javascript
JS前端框架关于重构的失败经验分享
Mar 17 Javascript
Js base64 加密解密介绍
Oct 11 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
vue组件讲解(is属性的用法)模板标签替换操作
Sep 04 Javascript
利用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
PHP查看SSL证书信息的方法
2016/09/22 PHP
js获取页面传来参数的方法
2014/09/06 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
打架检讨书400字
2014/01/17 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
师范生求职信
2014/06/14 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS