# 弱类型:
区分大小写;
ECMAScript:规范;
全等号:===;值 相等,类型也要相等;
window对象是对顶层的东西;
--frame框架
--location:地址栏
--document
--histroy,历史栏;
new 出来的是一个实例,标准的叫法;
命名规范:flag:标记,用于判断;
定义类型转换器时,如果日期格式有多个,可以定义常量定义常见的格式;
先解析字符串符合那个格式就用哪个格式取转换;
灵活性比较高,推荐做法;
要善于总结:
通过具体元素获取指定元素;
cloneNode;
innerHTML:多于div和span元素配合;
非dom标准;
web1.0:垂直门户网站,以内容为主;只能看,不能评论;
web2.0:社交网站(以人的关系为主),交互性;
web3.0:基于移动互联网的社交网站;
即使是三行代码,多日后也是需要维护的;
代码实现上:
javascript中没有重载;当定义了多个重名函数时
最后一个生效,其他无效;
arguments对象:是一个数组;
只存在两个域:全局域,和函数域;
不使用var 定义变量,该变量为全局变量;
比如直接 b="bb";
将函数作为参数传递给其他函数
作为参数的函数称之为回调函数;
自调函数:执行一次性任务:
(
)();
私有函数(内部函数),内部类;节省了全局命名空间;
返回函数的函数,如果你用一个变量节省接收
那个那个变量就是 一个函数;
可以直接用这个变量后加();调用;
如果直接输出该变量,不带();
则输出的是该函数的函数内容;
delete obj.name;删除obj对象的name属性;
delete obj.sayHello();删除方法;
obj.name="";
定义对象有三种方式:
new Object();
{}
function obj(){
{
}
this的用法:
1 标示html页面中的具体内容
2 表示一个明确的对象;
prototype:函数对象的一个属性;
扩展内建对象;
深复制:内容上复制,随着源对象的改变而改变;
比如信用卡和存储卡;
浅复制:仅仅是内容上的复制;
面试:
直视对方的眼睛;
*
*
*
dom中:一切皆节点:
parentNode比parentElement更加通用,即浏览器的兼容性更好;
itemsElement.checked = "checked";表示某个选项被选中;
itemsElement.checked = null;表示某个选项被设置为不选中;
multiple="multiple" 能同时选择多个
select标签的selectedIndex属性:
当没有选中任何一个选项时,selectedIndex属性值为-1;
当选中一个选项的时候,selectedIndex的属性值为被选中的项的索引值;
当选中多个选项的时候,selectedIndex属性值是第一个被选中的选项的索引值;
java函数重载的好处是节省命名空间,因为一旦方法多了,命名就很难,他也是多态的一种体现;
静态绑定或者说静态连编;
javascript中没有函数重载语法;但是可以通过arguments对象可以实现重载的效果;
因为arguments对象代表着你的参数组成的数组;从参数数组中一个个的取,对长度进行判断
从而实现重载效果;
回调函数:就是函数作为参数进行传递的函数;
一般可以写为匿名回调函数;
function fun(){ return "xx";}
alert(fun);--表示打印函数的全部内容;
alert(fun());--表示打印fun函数的返回值;
自调函数,自己调用自己;形式如下;
(函数体)(函数参数);比如
(
alert("xxx");
)();
如果需要带参数;
(
alert(str);//将会打印hello;
)("hello")
返回函数的函数;
function fun(str){
}
这返回的是一个函数;
必须用一个变量进行接收
var func=fun("我爱javascript");
func是一个函数了,那么你就可以调用了
func();--返回的是我爱javascript;
闭包的概念:
1 作用域链;
需求;我怎么在全局中访问到某个函数中的变量;
实现原理:
在全局范围内定义一个变量fun;
在函数f中定义一个匿名函数,或者说直接量形式的函数;
并且用fun:来接收函数中定义的私有匿名函数;
那么这个私有函数中的变量就在全局中可以访问了
这是因为你虽然定义的是一个私有匿名函数,但是却用一个全局变量取接收;
等于这个函数也成了全局的了,而函数体却是在私有局部的;
使得这个函数有多重特性;即可以访问所在函数体中的变量又可以访问本身的;
但是这有一个前提就是你必须得调用f函数;否则
fun变量没有接收到;
ajax引擎放在浏览器内核中;
基站定位比GPS:更精确;
XMLHttpRequest对象:的方法
1 open:建立连接
2 send发送数据;
ajax:请求过程:
1 创建XMLHttpRequest对象
2 创建服务器和客户端的连接
3 客户端向服务器发送请求
4 服务端给客户端发送响应;
工具类自己总结,以后很有用;
getText()没有这个方法,但是dom4j中有;
open的相对地址是引用js的那个jsp相对于servlet的相对路径;
javascript类库:
DWR:客户端直接将服务器端的java代码进行编译,成为
js文件;真强大;
jQuery:不污染顶级变量,只能读,不能修改;
对象只有一个;
定义变量时,使用$约束符;
获取页面元素 $(表达式);
DOM对象
jQuery对象:底层对DOM进行封装;
DOM对象转换成jQuery:$(DOM对象);
jQuery:是数组对象,通过索引值进行获取;
$username.val();//取值;
基本选择器,多个选择器并列时
需要用逗号隔开;
增强for循环,也叫隐式迭代;
读写方法集中,只是参数不同
这种思想值得借鉴;
title属性是自带提示;
大公司:站队,规范,重复性劳动,升职难;
小公司:能锻炼人;-->50-100人左右;
jQuery:对ajax的封装;
把数据弄到json中了我们怎么处理用呢/
//json格式的data要用eval函数弄一下,并且要加上"";
否则出不来,跟xml格式一样都是有要求滴;
jquery我的总结:
通过id获取dom节点语法:
$("#id");
用于接收的变量要用$符号遵循命名规范;
获取某个节点的值要用val();值;
完整的;
var $username=$("#username");
var value=$username.val();
dom对象转换为jquery对象
$(dom对象);
jquery对象转换为dom对象,两种方法;
var $username=$("#username");
1 $username[0];//
2 $username.get(0);
jquery对象是对dom对象的封装,将dom对象封装成了一个对象数组;
因此可以有两种方式;
jquery相对于dom,具有比较完善的事件处理机制
当变量不存在的时候,dom可能会报错,
而jquery会打印出undefined;
$("#btn1").click(function(){
$("#one").css("background","blue");
});
上面这段代码的意思是选取id为btn1的节点,并为其注册单击事件;
该事件的处理代码是为id为one的节点设置css样式,设置器背景色为blue;
跟dom有很大不同,首先取节点:
$(document).ready(function(){
//处理代码
);
这段代码的意思是将我们的document对象封装成jquery对象,并为其注册ready事件,
该事件类似于dom中的onload事件,但是比他的更加的优化;
$("btn1")
.click();--接收一个函数作为参数;
.css设置某个节点的css样式,这个样式必须要在css中存在,否则不生效;
$("#btn2").click(function(){
$(".mini").css("background","blue");
});
获取id为btn2的节点,并为其注册click事件,处理代码的意思是
将所有css选择器为class=.mini的css背景色设置为blue;
$("div");--获取所有标签名称为div的标签,即类似getElementsByTagName_r();
$("*");--允许统配符的时候,表示选取所有节点;
$("span,#two");--表示选取标签名称为span,获取id为two的标签;
当多个选择器并列时,用","号隔开
$("body input")
选择body下的所有input项;
$("body>input");选择所有为body的直接子元素的input项;
$("#one+div");选择id为one的标签的下一个div标签;
$("#one~div");//选择id为one的标签后面的所有div标签;
$("#two").siblings("div");//选择id为two的所有兄弟元素,并且兄弟元素必须为div;
$("#two").siblings(".one")//选择id为two的所有兄弟元素,并且该兄弟元素的css选择器的class为one;
$("div:first");选择所有div标签中的第一个
$("div:last");//选择所有div标签中的最后一个
$("div:even");//选择所有div标签中角标为偶数的
$("div:odd");//......................为奇数的;
$("div:not('.one')");选择所有div标签中class属性不为one的元素,(没有class的也算);
$("div:'.one'");...............................为one的元素;
$("div:eq(3)");
$("div:gt(3)");
$("div:lt(3)");
选择所有div标签,并且角标 gt,lt,eq:分别为大于,小于,等于;3的元素;
$(":header");选择所有的标题元素;
$(":animated");选择所有正在执行的动画元素;
slideToggle();方法设置动画的动作快慢的
$("div:has('.mini')")div中含class为mini的元素;--等同于 $("div:'.mini'");
$("div:parent"):div中有子元素的元素;
$("div:empty"):div中子元素和文本为空的元素
$("div:contains('di')"):div中的文本有di的元素;
$("div:visible")选取所有可见的div元素
$("div:hidden").show(3000);选取所有隐藏的div元素并让其在3秒内显示;
$inputs.each(function(index,domEle){
alert(domEle.value);
});
表示对$inputs这个元素数组进行迭代,类似于forEach,迭代到的每个元素用domEle变量进行接收
当前的domEle直接用,也可以用this.
$(this).val();表示把当前迭代到的元素转换为jQuery对象,并获取他的值;
$("div[title]"):选取所有div标签中有title属性的元素
$("div[title=test]")选取所有div标签中title属性为test的元素
$("div[title!=test]")选取所有div标签中title属性不为test的元素
$("div[title^=te]")选取所有div标签中title属性以te开头的元素
$("div[title$=est]")选取所有div标签中title属性以est结尾的元素
$("div[title*=es]")选取所有div标签中title属性含有es的元素
$("div[id][title*=es]")选取所有div标签中有id属性,并且title属性含有es的元素;
[]:中括号代表属性;
#:代表取id为...的元素
什么符号都不写,比如$("div")代表取所有标签名为div的标签;
$("div[class=one] :nth-child(2)"):表示选取所有满足条件的div:class属性为one的div标签的第二个子元素;
$("div[class=one] :first-child")表示选取所有满足条件的div:class属性为one的div标签的第1个子元素
$("div[class=one] :last-child")表示选取所有满足条件的div:class属性为one的div标签的最后一个子元素
$("div[class=one] :only-child")表示选取所有满足条件的div:class属性为one的div标签只有一个子元素,那么选中它;
$("input:enabled"):选取所有可用的input元素
$("input:disabled")选取所有不可用的input元素
$("input[name=newsletter]:checked")选取所有那么属性为newsletter,并且已经选中的input元素;
$("select>option:selected");选取所有select下的option被选中的option;
使用id获取的时候别忘了加#
text();操作元素的如果传递了参数,就是设置值,如果没传递值就是获取值,真方便
attr(name,value);操作元素的时候如果只传递了一个值,则表示获取该元素的对应name属性的值,
如果有两个参数就是设置name属性的值为value
$("#bj").after($("#p2"));北京后面插入p2
$("#bj").before($("#p2"));//在北京前门插入p2
$("#bj").insertAfter($("#p2"));在p2后面插入北京
$("#bj").insertBefore($("#p2"));在p2前门插入北京;
动态加载js:
$.getScript();
动态加载js;可以从服务器端接收获取;
$.getJSON();
跨域请求一般是不允许的;
全局函数:顶级对象进行调用$
验证分三步:
客户端,服务端,数据库端;
jquery表单验证插件的运行机制:
是通过lable标签进行提示的
如果你定义了对应的lable标签,则使用你的
否则给你创建一个lable;
oracle数据库面试很重要
熟悉eclipse;
linux:搭建开发环境,oracle,
linux怎么开发JavaEE;
总结能力
善于总结规律能力;
自主学习能力:这个不用怕;
不能都请;要单独请;让人感觉到你这人不错;