一.阻止事件冒泡
IE ev.cancelBubble =true ,非IE ev.stopPropagation()
二.阻止默认事件
return false 或 ev.preventDefault()
三.函数声明 与 函数表达式
function functionName(arg){} //函数声明
var aFunction = function(arg){} //函数表达式
四.new 操作符原理
var Person = function(name){
this.name = name;
}
Person.prototype.sayHello = function() {
console.log('hello ' + this.name);
}
var p1 = new Person('HANMEI');
p1.sayHello();
1. 创建一个类的实例:创建一个空对象obj,然后把这个空对象的__proto__设置为Person.prototype(即构造函数的prototype);
2. 初始化实例:构造函数Person被传入参数并调用,关键字this被设定指向该实例obj;
3. 返回实例obj。
function New(F){
var obj = {'__proto__': F.prototype}; /*第一步*/
return function() {
F.apply(obj, arguments); /*第二步*/
return obj; /*第三步*/
}
}
参考链接:https://www.cnblogs.com/lvmylife/p/8184176.html
五.程序中捕获异常的方法
try{
}catch(e){
}finally{
}
六、Ajax 原理
1.GET
var xhr = new XMLHttpRequest();
xhr.open('GET','url',true);
xhr.onreadystatechange =function(){
if(xhr.readyState == 4 && xhr.statu == 200){
console.log('444')
}
}
xhr.send();
2.POST
var xhr = new XMLHttpRequest();
xhr.open('POST','url',true)
//发送合适的请求头
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded')
xhr.onreadystatechange =function(){
if(xhr.readyState == 4 && xhr.statu == 200){
console.log('444')
}
}
xhr.send("foo=bar&lorem=ipsum");
// xhr.send('string');
// xhr.send(new Blob());
// xhr.send(new Int8Array());
// xhr.send({ form: 'data' });
// xhr.send(document);
七. offsetWidth offsetHeight和clientWidth clientHeight的区别
offsetWidth,offsetHeight (content +padding+border)
clientWidth,offsetHeight(content+padding)