理解javascript中的this

在阅读一些JS框架时,发现apply和call在其中随处可见,而仔细深入下去,发现都将知识点指向了这个看似简单又比较容易犯错的this上面,下面就简单总结一下JavaScript中的this和apply、call的用法。

this说白了只有一个含义:指的是调用函数的那个对象。

js主要在以下4种情况中使用,记住了这些情况,理解this也不是难事。

1. 在函数调用中,this指代window对象(node.js中指代global)

javascript原型对象分析

先上图:2015-01-13 17:16:44 的屏幕截图

 

我们创建的每一个函数都有一个prototype属性(注,它不是原型对象),它是一个指针,指向这个函数的原型对象,使用原型对象的最大好处是让所有对象实例共享它所包含的对象和方法。即所有可共享的对象和方法,可以放到这个函数的原型对象中。

理解Javascript闭包

这篇文章借鉴了阮老师关于闭包的文章分析,后面给出了链接,这里我加上了一些本人对闭包和this的理解。

闭包是Javascript中的一个重要的知识点,一直以为它只是JS的专有知识点,直到我最近阅读了《黑客与画家》一书,才明白原来它在很多编程语言如Perl5、Lisp中也大施拳脚。《黑》原文摘录如下:

62f47991jw1eo3cedc4bpj20c80940t5

作者顺带说明了黑客利于一个普遍的现象:程序员的思考模式总是落后于技术的变化速度。原文如下:

【tip】splice:删除js数组中指定的数组项

根据项目,需要对后端传递的数组进行处理,将其内不需要的的数组项刨除。最初很自然想到了delete操作符,它功能强大,直接针对对象,删除的无影踪,但后来发现它的功力在数组中体现不出来了。

先看一个例子,下面是一个数组: ["user_2", 4, "org_8", "user_5", "org_12", 6, "org_37"],我们想除掉其中的数字,如果我们使用delete,最初的写法是:

JavaScript中的闭包(转)

本文转是载自“前端乱炖”的一篇文章,我更改了原文的一些小错误,添加了一些便于理解的注释,对理解闭包非常有帮助。

JavaScript中函数的重要性毋庸置疑。在理解了JavaScript中的函数之后,非常重要的地点就是理解我们怎样使用函数来创建闭包。一直以来,闭包都是JavaScript新手学习时的一个难点所在,它位于JavaScript函数与变量作用域交叉的一个灰色地带:

js自定义callback回调函数

想jQuery这种非常成熟的js框架,对异步函数往往提供了一个回调函数,用来在异步执行完成之后执行该回调。有时候自己写一个异步函数后,需要对返回的结果进行处理,如果不考虑其异步特性,往往很难达到预期的效果,这时就需要我们手动的添加回调函数了。对于回调函数,以前学习C++时是将函数名或函数指针作为参数传递给一个需要执行的函数,在js里也是非常类似的。

回调函数听着挺神秘,其实理解了其执行时机也就没啥了,请看下面代码。

[html]
function subjectFun( callback){
//下面是一系列的代码,可以是异步的,如ajax方法等。
$.ajax(function(response){
…..//
 $.isFunction(callback) callback();//注意它写在了异步执行结果返回的内部
}
);

}

function afterSubjectFun(){
console.log("I run after #000000;">subjectFun completed!")
}

function start(){
subjectFun(afterSubjectFun);
}
[/html]

这样就能保证在异步执行完成之后,再调用自定义的回调函数了。

《JavaScript高级程序设计》笔记

JavaScript简介

JavaScript名字的由来

布兰登*艾奇为Netscape的Navigator 2开发脚本语言,起名LiveScript,后因跟Sun公司合作开发,临时起名JavaScript,搭了Java的顺风车。

完整的JavaScript的实现由以下三个部分组成

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

深入探讨JavaScript函数对象

(?)[-]
  1. 认识函数对象Function Object
  2. 函数对象和其他内部对象的关系
  3. 将函数作为参数传递
  4. 传递给函数的隐含参数arguments
  5. 函数的applycall方法和length属性

人人生而平等,但有些人比其他人更加平等——奥威尔

函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。

javascript中的函数不同于其他的语言,它的每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下