[last Modified 2008-12-25 18:20]
注:这里的参见x.x说的是Javascript-The Definitive Guide,5th Edition这个chm的章节。
1Javascript基础知识点:
1、 Jscript和Javascript的区别,各自的版本号发展
2、 Ajax全称,白话说说ajax什么意思
3、 常见Javascript开发库,说3,4个
4、 XMLHttpRequest对象在创建时,跨浏览器的不同
5、 Javascript的使用范围,不仅在浏览器,server端,或者开发者自己也可以在自己的环境里使用。但最常用的在浏览器。
6、 一些保留字,参见2.8。全记住不可能,可以找一些面试题,看看他们喜欢考什么特殊关键字
7、词法规则:大小写敏感,空格回车分割,忘了写分号一般没问题。但是
return
"hello";//会被自动转为return; "hello"
i =
12;//OK!
大意是,如果截断的那块自成一条语句的话,javascript会“聪明”的给你加一个分号分割。
8、常见IE和FF的javascript的差异,调错经验。
1)当然这2个对dom的解析就不完全一样,这个就很多了。window和document对象属性不太一样。
2)数组或者对象中最后一个元素,IE下不要多逗号,FF可以容忍不报错。IE不会。
3)对于一些全局变量,有时候IE会认为某某对象未定义,FF不会。这是2者从局部往上找变量的定义的时候的差异造成的。具体我还没研究,一般IE下要在定义的时候加个var,如果还不行,调用的时候在对象前面加"window.",即这个变量是全局变量了。
9、怎样扩展javascript中已定义的类型的方法,比如那个Array的uniq()方法,学会它的写法。
10、string中双引号和单引号表示string都可以,双引号套单引号,单引号套双引号都可以,但不能单引号套单引号,双引号套双引号,除非用\反斜杠escape
11、函数function的参数相关//TODO,待补全和完善
1)javascript的函数,一个可以顶多个参数变化的形式。
function doit(x,y){
//-----
}
//可以响应如下调用,因此可能就没有高级语言的重载了(可能说的不对)
doit();
doit(a);
doit(a,b);
doit(a,b,c);
2)funciton的范围和样式 参见8.8
3)全局函数eval()的用法
4)arguments属性的一些用法
--判断参数有没有,设置缺省参数
function hello(arg1){
realarg = arg1||"defaultArg";//缺省参数设为"defaultArg"
//如果在调用hello()时,没有传递参数过来,那么就是用缺省参数。否则使用传进来的参数
}
5)apply(),call()的区别
12、函数closure
//觉得好像差不多可以成功的一个例子,出来的效果是点击,弹出的都是5.
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}
window.onload = addLinks;
//-下面这个是正确的实现
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);//!!!!!!!!!!!!!注意这里
document.body.appendChild(link);
}
}
window.onload = addLinks;
this的作用域
以上的例子,告诉我们1个事实:
1)对于绑定了事件响应的那些function,在绑定的时候,并没有执行到里面去。所以必须在绑定的时候,就把参数传进去,用到的是self-invoking的funciton,即在定义的时候已经填好参数准备调用了。如上面的注释那块。
13、正则表达式的使用。参见TODO
14、对象访问方式,可以point.x,也可以point["x"]这种类似数组的方式
15、undefined和null的异同。参见3.7,3.8,或者google一下文章。
16、javascript的内建主类型Primitive Type:String,Number,Boolean,Object还有游离之外的undefined和null。而javascript中还有其他一些基于Object的类型,比如比较基础的Date,Math,Function,Array,RegExp
17、一些特殊的语句操作符
1)参见6.9 for/in 注意,可以遍历数组或者Object中属性,但访问方式不一样。
2)参见6.18 with ,这个是访问对象的属性时,简单的省略了这些的属性的宿主对象的名字
3)参见6.16,6.17,javascript也有异常机制,基本和java类似。不过没有throws,只有throw。记一下写法。
18、参加7.2.3,可以delete一个对象的属性。这个操作符比较特别
19、typeof ,instanceof都是干嘛的,异同。google看看相关文章。
20、常见类型的常见方法
Array://TODO
String://TODO
21、事件。html各个元素可以响应的事件类型,参见17.1
22、escape(),encodeURI(),encodeURIComponent()三个为了防止汉字乱码的函数。参见
http://jiake0504.iteye.com/blog/198048
不过我最近写的应用里,一个也没用到,也没乱码,参考我另外一篇文章《乱码的相关问题》
http://blademan-stu.iteye.com/blog/290410
23.javascript里面实现private和public,用上面12里说到的self-invoking function来实现
var person = function () {
// Private
var name = "Robert";
return {//return里面的都是public的
getName : function () {
return name;
},
setName : function (newName) {
name = newName;
}
};
}();
alert(person.name); // Undefined
alert(person.getName()); // "Robert"
person.setName("Robert Nyman");
alert(person.getName()); // "Robert Nyman"
24this用法
参见
http://www.cnblogs.com/daniel-shen/archive/2006/07/12/449280.html
25setTimeout()和setInterval()的异同,都是可以用来作定时执行的。
2Jquery快速学习
参考文档[url]http://jquery.org.cn/visual/cn/index.xml [/url] ----------------*
0.看这篇*文档的时候,需要注意的地方。
这篇API文档又好查,有好用。初学者可能不会注意到这样一个地方。比如Ajax那个分支里面。有的是
$.ajax
有的是
ajaxStart
有的标明了$. 有的没有。这是什么意思呢?
$. 相当于jquery的全局函数。而ajaxStart这个API说的是一般的jquery对象,可以调用的方法。比如$("#loadingDiv").ajaxStart(...)
1.DOM和JQuery对象的区别。比如document是DOM,$(document)就是jquery对象了。封装成为jquery对象后,才可以按照jquery的规则,调用它支持的函数。在这之前,它只是普通的javascript对象。$()支持的参数有:
1)DOM对象
2)CSS查询和xpath查询表达式,这样查出来的,再封装好的jquery对象,是一组对象、
用上面2种语法的选择器还是有些复杂,有css底子应该没什么问题
http://jquery.com/docs/Base/Expression/CSS/
http://jquery.com/docs/Base/Expression/XPath/
常见最简单的,比如$("#someId"),$("a"),表示选中的是某个id为“someId”的dom对象转化后的jquery对象 ,后面那个是所有的a标签代表的jquery对象数组。
2.DOM属性的操作,以及CSS,参加*中的DOm>attributes,CSS这2个分支。
3对javascript的一些扩展。,参见*中的Javascript那个分枝。
4Effects那节可以不看,其实主要就是一些,选中了一个dom之后,它能闪闪,或者来回动之类的。
5Events那节,主要是bind,unbind以及其他一组成对的事件函数。bind和unbind就是绑定和解绑dom对象和某个事件以及某个响应函数之间的关系。
后面一组成对的事件函数说明的都是一个问题,click()和click(fn)为例。click(fn)等同于bind("click",fn),而click()就是触发这个事件。
6jquery plugins的写法。
2种写法,都是需要作2件事,一个是定义新的fn,另外一个是在jquery的命名空间里增加这个plugin,使得调用的时候能访问到。
一种是
$.fn.haha = function(){//}
$.haha = function(){}
另外一种是用extend,参见*的Core的$extend(prop)方法
7AJAX
参见*的ajax,那组函数里面,最基本的是第一个$.ajax(properties),后面的大多是自定义了很多不同的properties,根据不同的场景,使得写代码写的更简练一些。有一个$.ajaxSetup(settings),比如你下面要做到的一大组ajax调用参数都很相似,用这个setup可以简写。这块重点是在$.ajax(properties)里面properties的那些变量,分别是不同的值时,分别对应的不同的行为。另外就是注意一下本文0中对这个文档的一个说明。能容易看明白它的文档。
参考:
1、一些面试题
http://www.jobhere.net/html/19375.shtml
2、Javascript的OO
http://www.iteye.com/topic/155109