js的一些问题(一)

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值