总结本知识点

Math.round(2.5)  //3

+ new Array(017);  //NaN
//017为八进制,所以是new Array(15);+会将后面的参数转化为数字类型。这里就是对empty*15 进行Number转化,所以为NaN。

function test(a){
  a ^= (1<<4)-1;
  return a;
}

test(10);   //5
//1<<4:1左移4位,即1*2的4次方 = 16 -1 =15;
//10异或15,为5

//声明函数的几种方法:
function a(){

}

var a = function(){

}

var a = new Function();

var aa = function b(){
  console.log(123);
}

aa();  //123

b();  //报错,在函数外部无法通过b访问到函数

function check(){
  console.log("haha");
}

setTimeout(check(),2000);  //立即调用
setTimeout(check,2000);  //2s后调用
setTimeout('check()',2000);  //2s后调用


console.log(1+"2"+"2");  //"122"
console.log(1++"2"+"2");  //"32"  +"2"将字符串转为2
console.log("A"-"B"+"2");  //"NaN2"  NaN与字符串合并
console.log("A"-"B"+2);  //NaN  加法中有一个为NaN,结果就为NaN

图片加载问题:

1.只要是img src引用的都会请求。

2.background:url()所属样式如果挂靠在某个元素上,就一定会请求;单独写这么一个样式则不会请求。

mark标签:高亮显示文本(默认是黄底黑字)

ins标签的文字会带下划线

del显示删除的文本

innerHTML,outterHTML,innerText,outerText

<div id="div1"> <p> text is div </p> </div>

var oDiv = document.getElementById('div1');
oDiv.innerHTML;  //<p> text is div </p>
oDiv.innerText;  //text is div
oDiv.outerHTML;  //  <div id="div1"> <p> text is div </p> </div>
oDiv.outerText;  //text is div

word-break,white-space,letter-spacing,word-spacing

/*规定自动换行的处理方法:浏览器的默认换行规则;允许在单词内换行;只能在半角空格或连字符处换行*/
word-break:normal | break-all | keep-all

/*处理元素内的空白:空白会被浏览器忽略;空白会被浏览器保留(相当于pre标签);文本不会换行,直到遇到br标签为止*/
white-space:normal | pre | nowrap

/*增加或减少字符间的空白(字符间距):默认,规定字符间没有额外的空间;定义字符间的固定空间(允许负值)例如3px;规定从父元素继承*/
letter-spacing:normal | length | inherit

/*增加或减少单词间的空白(word间距):默认,规定字符间没有额外的空间;定义字符间的固定空间(允许负值)例如3px;规定从父元素继承*/
word-spacing:normal | length | inherit

disabled与readonly

disabled指当input元素加载时禁用此元素。input内容不会随着表单提交。

readonly规定输入字段为只读,输入框无法通过直接键入进行修改。input的内容会随着表单提交。

无论设置readonly还是disabled,通过js脚本都能更改input的value。

jquery的width,height等属性

width():设置或返回元素的宽度不包括内边距边框外边距
height():设置或返回元素的高度不包括内边距边框外边距
innerWidth():返回元素的宽度包括内边距
innerHeight():返回元素的高度包括内边距
outerWidth():返回元素的宽度包括内边距和边框
outerHeight():返回元素的高度包括内边距和边框
outerWidth(true):返回元素的宽度包括内边距边框外边距
outerHeight(true):返回元素的高度包括内边距边框外边距

onload与$().ready

window.onload : dom文档树加载在完和所有文件加载完之后执行的函数。load事件。 写多次onload事件,会执行最后一次。

$().ready():在dom树加载完后。不用等图片和非文字媒体。 DOMContentLoaded事件。 写多次,会按照顺序执行。

//写法
$(document).ready(function(){
  
})

$(function(){

});

$().ready(function(){

});

jQuery().ready(function(){

});

jquery的bind()与live()

bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

$(selector).bind(event,data,function)

$(selector).live(event,data,function)

bind绑定事件与live绑定事件的差别

live会给所有匹配的元素加一个事件处理函数,即使这个元素是以后再添加进来的也有效。而bind就不会,当没有元素的时候,是添加不上的。

live方法是基于“事件委托”的,所谓的“事件委托”指的是,绑定在祖先元素上的事件可以在其后代元素上进行使用。在页面加载到live方法的时候,live方法会去判断DOM中是否存在目标控件节点,如果没有找到,就一层一层的向上冒泡,将事件“委托”到DOM根节点上。

mouseover/mouseout,mouseenter/mouseleave

使用mouseover/mouseout时,如果鼠标移动到子元素上,即使没有离开父元素,也会触发父元素的mouseout事件。

使用mouseenter/mouseleave时,如果鼠标没有离开父元素,在其子元素上任意移动,也不会触发父元素的mouseleave事件。

in/for-in,

1.Object.hasOwnProperty(“xxx”): 不包括原型链上的方法

2.in 不管在原型链,还是对象的属性,都包括。

3.for…in 可枚举的,原型链+对象,但原型链上的属性都默认设置了不可枚举。 用于遍历对象属性名。

4.Object.keys() 对象自身可枚举,返回 属性名的数组

5.Object.getOwnProperyNames() 实例中的所有属性,无论是否可枚举,不包括原型,返回属性名的数组。

  1. for…of 用来遍历数组(数组元素值)

总结:

原型链 + 对象自身 : in(所有) ,for…in(可枚举)

对象自身: getOwnPropertyNames(自身所有,除了Symbol),keys(自身可枚举),hasOwnPrperty()

函数提升 比变量提升 在前面。

全局变量不能通过delete删除。window上的属性可以被删除。

Table of Contents