我的javascript学习笔记(血泪史之…

来源:互联网 发布:谷歌浏览器mac 编辑:程序博客网 时间:2024/06/11 11:42

# 弱类型:

区分大小写;

ECMAScript:规范;

全等号:===;值相等,类型也要相等;

window对象是对顶层的东西;

--frame框架

--location:地址栏

--document

    --links,链接对象;

    --archors;锚对象,指向固定点;

    --images,图片对象;

    都是数组对象;;

--histroy,历史栏;

new出来的是一个实例,标准的叫法;

命名规范:flag:标记,用于判断;

定义类型转换器时,如果日期格式有多个,可以定义常量定义常见的格式;

先解析字符串符合那个格式就用哪个格式取转换;

灵活性比较高,推荐做法;


要善于总结:


通过具体元素获取指定元素;

cloneNode;

innerHTML:多于divspan元素配合;

dom标准;

web1.0:垂直门户网站,以内容为主;只能看,不能评论;

web2.0:社交网站(以人的关系为主),交互性;

web3.0:基于移动互联网的社交网站;

      pc端的大众点评,

      微信;


即使是三行代码,多日后也是需要维护的;

代码实现上:

 完成功能,目标

 做优化;力所能及;


 java中的函数重载好处:

 1 节省了命名空间

  2 执行效率高;

javascript中没有重载;当定义了多个重名函数时

最后一个生效,其他无效;

arguments对象:是一个数组;

只存在两个域:全局域,和函数域;

不使用var定义变量,该变量为全局变量;

比如直接b="bb";

将函数作为参数传递给其他函数

作为参数的函数称之为回调函数;


自调函数:执行一次性任务:

(

    function() {alert(""aaa)};

)();


私有函数(内部函数),内部类;节省了全局命名空间;

返回函数的函数,如果你用一个变量节省接收

那个那个变量就是 一个函数;

可以直接用这个变量后加();调用;

如果直接输出该变量,不带();

则输出的是该函数的函数内容;



 作用域链:

 闭包:


delete obj.name;删除obj对象的name属性;

delete obj.sayHello();删除方法;

obj.name="";

定义对象有三种方式:

new Object();

{}

function obj(){

    this.name="";

    this.sayHello=function()

{

    }

}


this的用法:

1标示html页面中的具体内容

2表示一个明确的对象;



prototype:函数对象的一个属性;

扩展内建对象;


深复制:内容上复制,随着源对象的改变而改变;

比如信用卡和存储卡;

浅复制:仅仅是内容上的复制;


面试:

 不穿没有领子的衣服

 有袖子的衣服;

 朴素,不太讲究;

 要像一个搞开发的;

直视对方的眼睛;



 利用nodeType的值,判断获取的是什么节点:

1 代表是元素节点

2 代表是属性节点

3 代表的是文本节点;

dom:一切皆节点:

parentNodeparentElement更加通用,即浏览器的兼容性更好;

itemsElement.checked = "checked";表示某个选项被选中;

itemsElement.checked = null;表示某个选项被设置为不选中;

multiple="multiple" 能同时选择多个  size="10"  确定下拉选的长度

select标签的selectedIndex属性:

当没有选中任何一个选项时,selectedIndex属性值为-1;

当选中一个选项的时候,selectedIndex的属性值为被选中的项的索引值;

当选中多个选项的时候,selectedIndex属性值是第一个被选中的选项的索引值;

java函数重载的好处是节省命名空间,因为一旦方法多了,命名就很难,他也是多态的一种体现;

静态绑定或者说静态连编;

javascript中没有函数重载语法;但是可以通过arguments对象可以实现重载的效果;

因为arguments对象代表着你的参数组成的数组;从参数数组中一个个的取,对长度进行判断

从而实现重载效果;


回调函数:就是函数作为参数进行传递的函数;

一般可以写为匿名回调函数;

function fun(){ return "xx";}

alert(fun);--表示打印函数的全部内容;

alert(fun());--表示打印fun函数的返回值;


自调函数,自己调用自己;形式如下;

(函数体)(函数参数);比如

(

   function(){

alert("xxx");

   }

)();

如果需要带参数;

(

   function(str){

alert(str);//将会打印hello;

   }

)("hello")


返回函数的函数;

function fun(str){

    return function(){

      return 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创建服务器和客户端的连接

  open(method,url,asynch);

3客户端向服务器发送请求

  send();get请求方式发送数据无效;

4服务端给客户端发送响应;

  responseXML:是属性,不要加括号,都中了好几次招了

  responseText:是属性,不是函数,不要加括号,

  JSON


 请求首部信息必须要加上---post请求方式;

 否则服务端收不到消息;

  get方式要加在url后面;

 readStateonreadStateChange必须弄清楚了;


 建行的验证码验证就是ajax,即异步交互;

 正确显示绿色对勾,错误显示红x


 timeStamp="+new Date().getTime()+"


 xml格式响应头:content-Type:text/xml;这个又中招了.

 charset=UTF-8;


工具类自己总结,以后很有用;

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");

});

上面这段代码的意思是选取idbtn1的节点,并为其注册单击事件;

该事件的处理代码是为idone的节点设置css样式,设置器背景色为blue;

dom有很大不同,首先取节点:


$(document).ready(function(){

//处理代码

);

这段代码的意思是将我们的document对象封装成jquery对象,并为其注册ready事件,

该事件类似于dom中的onload事件,但是比他的更加的优化;

$("btn1")

.click();--接收一个函数作为参数;

.css设置某个节点的css样式,这个样式必须要在css中存在,否则不生效;


 

$("#btn2").click(function(){

$(".mini").css("background","blue");

});

获取idbtn2的节点,并为其注册click事件,处理代码的意思是

将所有css选择器为class=.minicss背景色设置为blue;


$("div");--获取所有标签名称为div的标签,即类似getElementsByTagName_r();

$("*");--允许统配符的时候,表示选取所有节点;

$("span,#two");--表示选取标签名称为span,获取idtwo的标签;

当多个选择器并列时,","号隔开


$("body input")

选择body下的所有input;

$("body>input");选择所有为body的直接子元素的input;

$("#one+div");选择idone的标签的下一个div标签;

$("#one~div");//选择idone的标签后面的所有div标签;

$("#two").siblings("div");//选择idtwo的所有兄弟元素,并且兄弟元素必须为div;

$("#two").siblings(".one")//选择idtwo的所有兄弟元素,并且该兄弟元素的css选择器的classone;

$("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中含classmini的元素;--等同于$("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属性为onediv标签的第二个子元素;

$("div[class=one] :first-child")表示选取所有满足条件的div:class属性为onediv标签的第1个子元素

$("div[class=one] :last-child")表示选取所有满足条件的div:class属性为onediv标签的最后一个子元素

$("div[class=one] :only-child")表示选取所有满足条件的div:class属性为onediv标签只有一个子元素,那么选中它;

$("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;


总结能力

善于总结规律能力;

自主学习能力:这个不用怕;

不能都请;要单独请;让人感觉到你这人不错;


0 0
原创粉丝点击