对于 if 语句括号里的表达式,ECMAScript 会自动调用 Boolean()
转型函数将这个表达式的结果转换成一个布尔值。若是值为 true,执行后面的一条语句,不然不执行。css
经过arguments 对象的length属性,来智能的判断有多少参数,而后把参数进行合理的应用 。
好比,要实现一个加法运算,将全部传进来的数字累加,而数字的个数又不肯定。前端
function box() {
sum0 var=;
iflength0returnsum//若是没有参数,退出 (arguments.==);
for0length//若是有,就累加 (var i =;i < arguments.; i++) {
sumsum =+ arguments[i];
}
returnsum//返回累加结果 ;
}
5912 alert(box(,,));
函数内部,有两个特殊的对象:arguments 和 this。arguments 是一个类数组对象,包含着传入函数中的全部参数,主要用途是保存函数参数。但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。
对于阶乘函数通常要用到递归算法,因此函数内部必定会调用自身;若是函数名不改变是没有问题的,但一旦改变函数名,内部的自身调用须要逐一修改。为了解决这个问题,咱们可使用 arguments.callee
来代替。jquery
numfunction box() {
ifnum1 (<=) {
return1 ;
else }{
returnnumnum-1//使用 callee 来执行自身 } * arguments.callee();
}
直接接收 event 对象,是 W3C 的作法,IE 不支持,IE 本身定义了一个 event 对象,直接在 window.event 获取便可。web
function (evt) input.onclick ={
varwindow//实现跨浏览器兼容获取 event 对象 e = evt ||.event;
alert(e);
};
W3C 中的 target 和 IE 中的 srcElement,都表示事件的目标。算法
function getTarget(evt) {
varwindow e = evt ||.event;
return//兼容获得事件目标 DOM 对象 e.target || e.srcElement;
documentfunction (evt) }.onclick ={
var target = getTarget(evt);
alert(target);
};
在阻止冒泡的过程当中,W3C 和 IE 采用的不一样的方法,那么咱们必须作一下兼容。chrome
function stopPro(evt) {
varwindow e = evt ||.event;
windowtrue .event ? e.cancelBubble =: e.stopPropagation();
}
function preDef(evt) {
varwindow e = evt ||.event;
if (e.preventDefault) {
e.preventDefault();
else }{
false e.returnValue =;
}
}
当咱们右击网页的时候,会自动出现 windows 自带的菜单。那么咱们可使用 contextmenu 事件来修改咱们指定的菜单,但前提是把右击的默认行为取消掉。windows
function addEvent(obj, type, fn) //添加事件兼容{
if (obj.addEventListener) {
type obj.addEventListener(, fn);
elseif }(obj.attachEvent) {
'on'type obj.attachEvent(+, fn);
}
function removeEvent(obj, type, fn) //移除事件兼容}{
if (obj.removeEventListener) {
type ob j.removeEventListener(, fn);
elseif }(obj.detachEvent) {
'on'type obj.detachEvent(+, fn);
}
}
window'load'function () addEvent(,,{
vardocument'text' text =.getElementById();
'contextmenu'function (evt) addEvent(text,,{
varwindow e = evt ||.event;
preDef(e);
vardocument'menu' menu =.getElementById();
'px' menu.style.left = e.clientX +;
'px' menu.style.top = e.clientY +;
'visible' menu.style.visibility =;
document'click'function () addEvent(,,{
document'myMenu''hidden' .getElementById().style.visibility =;
});
});
});
文档模式在开发中貌似不多用到,最多见的是就是在获取页面宽高的时候,好比文档宽高,可见区域宽高等。数组
IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差异的,在Standards Mode下对于盒模型的解释和其余的标准浏览器是同样,但在Quirks Mode模式下则有很大差异,而在不声明Doctype的状况下,IE默认又是Quirks Mode。因此为兼容性考虑,咱们可能须要获取当前的文档渲染方式。浏览器
document.compatMode正好派上用场,它有两种可能的返回值:BackCompat
和CSS1Compat
。
BackCompat:标准兼容模式关闭。浏览器客户区宽度是document.body.clientWidth
;
CSS1Compat:标准兼容模式开启。 浏览器客户区宽度是document.documentElement.clientWidth
。
例如:app
function getViewport(){
ifdocument"BackCompat" (.compatMode ==){
return {
widthdocument :.body.clientWidth,
heightdocument :.body.clientHeight
}
else }{
return {
widthdocument :.documentElement.clientWidth,
heightdocument :.documentElement.clientHeight
}
}
}
function getStyle(element, attr) {
iftypeofwindow'undefined'//W3C (.getComputedStyle !=) {
returnwindownull .getComputedStyle(element,)[attr];
elseiftypeof'undeinfed'//IE }(element.currentStyle !=) {
return element.currentStyle[attr];
}
}
标准浏览器支持 insertRule, IE低版本则支持 addRule。
window.innerWidth
,window.innerHeight与document.documentElement.clientWidth,document.documentElement.clientHeight
注:用jquery获取的页面的宽度页面不包括滚动条的宽度的
window.innerWidth与window.innerHeight(IE9及以上,谷歌,火狐识别,宽高包含滚动条的宽度)
document.documentElement.clientWidth与document.documentElement.clientHeight(IE,火狐,谷歌都能识别,宽高不包含滚动条的宽度)
若是页面没有滚动条:
window.innerWidth==document.documentElement.clientWidth,
window.innerHeight==document.documentElement.clientHeight(IE8及一下不识别window.innerHeight与window.innerWidth)
//跨浏览器获取视口大小function getInner() {
iftypeofwindow'undefined'//IE8及如下undefined (.innerWidth !=) {
return {
widthwindow :.innerWidth,
heightwindow :.innerHeight
}
else }{
return {
widthdocument :.documentElement.clientWidth,
heightdocument :.documentElement.clientHeight
}
}
}
这个是浏览器隔离的,每一个浏览器都会把localStorage存储在本身的UserData中,如chrome通常就是
C:\Users\
你的计算机名\AppData\Local\Google\Chrome\User Data\Profile\Local Storage
若是要在浏览器查看,打开调试工具,在application选项卡下能够查看。
知海匠库web前端课程http://www.zhihaijiangku.com,研发自网易系,项目教学,贴合企业用人需求,助你高薪就业。