描述new一個對象的過程
- 創(chuàng)建一個對象
- this指向這個對象
- 執(zhí)行代碼毕莱,即給this賦值
- 返回this
function Fun(name,age){
this.name = name;
this.age = age;
this.class = 'classname'
//return this 這里是默認(rèn)返回this
}
var f = new Fun('jialin',22)
原型繼承案例--封裝一個dom查詢
function Elem(id){
this.elem = document.getElementById(id)
}
Elem.prototype.html(val){
var elem = this.elem;
if(val){
elem.innerHTML = val;
return this膳音;//返回一個對象前弯,鏈?zhǔn)讲僮鳎胘query原理
}else{
return elem.innerHTML;
}
}
Elem.prototype.on(type,fn){
var elem = this.elem;
elem.addEventListener(type,fn);
return this;
}
var box = new Elem('inner');
box.html('this is test').on('click',function(){
alert('this is update');
}).html('<p>javascript</p>')
創(chuàng)建10個a,點擊彈出對應(yīng)的序號
for(var i = 0;i<10;i++){
(function(i){
var a = document.createElement("a");
a.innerHTML = i + "<br>";
a.addEventListener('click',function(e){
e.preventDefault();//阻止默認(rèn)事件
alert(i);
});
document.body.appendChild(a)
})(i)
}
封裝變量岖免,收斂權(quán)限
function isFirstLoad(){
var _list =[];//以下劃線命名一般表示私有變量
return function(id){
if(_list.indexOf(id)>=0){
return false
}else{
_list.push(id);
return true;
}
}
}
var firstLoad = isFistLoad();
firstLoad(10)找颓;
firstLoad(10)
firstLoad(20)
獲取當(dāng)前年月日
function formatDate(time){
if(!time){
time = new Date();
}
var year = time.getFullYear();
var month = time.getMonth() + 1;
var date = time.getDate();
if(month < 10){
month = '0' + month;
}
if(date<10){
date = '0' +date;
}
return year + '-' + month + '-' + date;
}
var time = new Date();
var formatDate = formatDate(time);
console.log( formatDate)
寫一個能遍歷對象和數(shù)組的函數(shù)
function forEach(obj,fn){
var key;
if(obj instanceof Array){
obj.forEach(function(val,index){
fn(index,val)
});
}else{
for(key in obj){
if(obj.hasOwnProperty(key)){
fn(key)
}
}
}
}
var arr = [1,2,3];
forEach(arr,function(index,val){
console.log(index,val)
});
var a = {
x:1,
y:2
}
forEach(a ,function(index){
console.log(index)
});
隨機數(shù)截取
var random =Math.random();
random = random + '0000';
random = random.slice(1,4);
console.log(random)
完善通用綁定事件的函數(shù)
function bindEvent(elem,type,select,fn){
if(fn == null){
fn = select;
select = null;
}
elem.addEventListener(type,function(e){
var target;
id(select){
target = e.target;
if(target.matches(select)){
fn.call(target,e)
}else{
//不使用代理
fn(e);
}
}
})
}
合并DOM查詢
var list = document.getElementById('box');
var frg = document.createDocumentFragment();
var x,li;
for(x = 0 ;x<10;x++){
li = document.createElement('li');
li.innerHTML = '1' + x;
frg.appendChild(li)
}
list.appendChild(frg)