1. javascript的typedeof的返回值类型,一共六种。Number,object,string,function,undefined,boolean
2. javascript中的强制转换方法有parseInt,parseFloat,number,soString,
隐式的转换是:
1. 字符串加数字是字符串
2. 数字减字符串是数字,字符串减数字也一样,两个字符串相减也是数字
3. 加减大于小于和减一样
4. Undefined==null
1. 字符串和数字比较,字符串转换为数字,
2. 数字和布尔比较,布尔转数字
3. 字符串和布尔比较,两者转数字
4. NaN不表示一个数字,但是他的tyopeof是number。
3.引用类型的比较是内存地址的比较,不需要转换
4.显示转换boolean,string,number
Split和join的区别
Join方法是吧数组的所有元素放入一个字符串,元素通过制定分隔符进行划分
Split方法:用于把一个字符串分割为字符串数组
绑定事件和普通事件的区别:
普通的添加时间不支持添加多个事件,最下面的会覆盖最上面的。而事件绑定的方式添加事件可以添加多个
注意:addEventListener不兼容低版本ie,使用这个添加事件之前,需要先解决兼容性问题。
IE和DOM事件流的区别:
1. 执行顺序不一样
2. 参数不一样
3. 事件加不加on
4. This的指向问题
IE和标准下兼容性的解决
1.!important
(功能有限,ie7也逐渐支持!Important,现在只能正对ie6的兼容)
2 .css hack
针对谷歌浏览器支持的css样式
@media screen and (-webkit –min-device-pixel-ratio:0){
样式
}
针对ie6特制识别的css样式
*html.searchBox{
样式
}
针对FF浏览器的内核css写法
@-moz-document url-prefix(){
样式
}
如果只让ie6看见用*html .head{color:#000;}
如果只让ie7看见用*+html .head{color:#000;}
如果只让ff看见用:root body .head{color:#000;}
如果只让ff、IE8看见用html>/**/body .head{color:#000;}
如果只是不让ie6看见用html>body .head{color:#000;} 即对IE 6无效
如果只是不让ff、IE8看见用*body .head{color:#000;} 即对ff、IE8无效
如果只让ie6看见用:_color:#000;
如果只让ie7看见用+和_结合的方法 : +color:#foo;_color:#000
\9″ 例:”margin:0px auto\9;”.这里的”\9″可以区别所有IE8和FireFox.
“*” IE6、IE7可以识别.IE8、FireFox不能.
“_” IE6可以识别”_”,IE7、IE8、FireFox不能.
如:
.a {color:#f00; color:#f60\9; +color:#00FF00; _color:#0000FF; }
从左到右分别对应 FF,IE8 IE7 IE6
=============================
P{+color:#f00;} 支持 IE7 IE6 不支持 FF IE8b
P{_color:#f00;} 支持ie6 不支持 FF
P{color:#f00; !important;}
P{color:#f00;} 支持 IE6 IE7 IE8b FF
P{color:#00f !important;color:#f00; } 支持IE7 IE8b FF 不支持IE6
head:first-child+body p{color:#f00;} 支持IE7 IE8b FF 不支持IE6
/*\*//*/
/**/ 支持IE8b 不支持IE6 IE7 FF
html*{color:#f00} 支持IE6 IE7 不支持 IE8b FF
body>p{color:#f00} 支持IE7 IE8b FF 不支持 IE6
html[xmlns] p {color:#f00} 支持 IE7 IE8b FF 不支持 IE6
@import "style.css"
@import "style.css"
@import url(style.css)
@import url('style.css')
@import url("style.css") 支持 IE6 IE7 IE8b FF
P{/*/*color:#f00;/* */} 支持 IE6 IE7 FF 不支持 IE8b
针对不同的浏览器:
selector{
background-color:#f00;/*all*/
background-color:#0ff\0;/* ie 8/9 */
background-color:#0f0\9\0;/* ie9 */
*background-color:#00f;/*ie7*/
_background-color:#ff0;/*ie6*/
background-color//:#090;/*非IE*/
background-color:#900\9;/*所有ie*/
}
当然,还有专门针对IE7的写法:+background-color:#00f;
不过上述代码,我把background-color改成background时,又区分不出ie9和ie8了,因此,使用的时候最好注意一下。
3. 使用ie专用的条件注释
4. Css filter的使用
IE和标准下兼容的写法
Var ev = ev|| window.event
document.documentElement.clientWidth ||document.body.clientWidth
Var target = ev.srcElement||ev.target
Ajax请求post和get的区别
在使用ajax向服务器发送数据的时候,我们可以使用post也可以使用get,到底该拿哪种呢?
区别:
1.使用geti请求的时候,参数在url显示,而使用post则不会显示。
2.Get请求发送数据量小,不能超过2kb,post请求发送数据量大
3.get请求要注意缓存问题。Post不需要注意这个问题。
4. post请求必须设置Content-Type值为application/x-form-www-urlencoded
5. 发送请求时,因为get请求的参数都在url里,所以send函数发送的参数为null,而post请求在使用send方法时,却需赋予其参数
在客户端使用get请求时,服务器端使用Request.QueryString来获取参数,而客户端使用post请求时,服务器端使用Request.Form来获取参数.
关于服务器端获取数据,我们还可以使用一个通用的获取参数的方式即Request["username"],但是此方法存在一个问题,我们随后来讲.
get请求在发送后,即被缓存,而post请求时 never cached.
当我们在get和post请求时,同时在url中、send方法的data中都放置了参数,为什么获取的总是url中的参数值呢?
答:在使用Request时,其会从QueryString,Form,ServerVariable中遍历一番,如果发现符合要求的数据,那么就会停止向后搜寻.所以,我们上例中获取的username实际上都是url中的username值.
安全性:get的安全性低,post的安全性高
call和apply的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
call方法:
语法:call(thisObj,Object)
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
call的作用简单的说就是改变对象的内部指针
apply方法:
语法:apply(thisObj,[argArray])
定义:应用某一对象的一个方法,用另一个对象替换当前对象。
说明:
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
Ajax请求数据时,如何解释json
解析json的方式一般有两种,JSON.parse(),eval也可以解析json数据,有什么区别呢。
前者解析json的格式的数据,并且会对要解析的字符串格式进行格式检查,如果格式不正确就不解析,但是eval()可以解析任何数据,eval是相对不安全的。
注意:某些低级浏览器不支持JSON.parse()