修改用字面量创建的对象的原型的方法;
var a = Object.create({a:1});
a.a //1
var p = Object.getPrototypeOf(a);
p.a = 2; //2
a.a //2
var man = {
name:"bosn",
weibo:"@bosn",
$age:null,
get age(){
return new Date().getFullYear()-1988;
},
set age(val){
this.$age = +val;
}
}
get set 中的函数体中的属性不能与函数名相同
setTimeout在使用的时候注意:在同一个函数里clearTimeout要在setTimeout之后执行才有效,因为clearTimeout在之前的话,虽然清除了循环,但之后又执行后面的setTimeout,又会进入另一个循环.
var a = {b:function(){return 5}} a.b() //5
var f = {get c(){return 8}} f.c //8
模拟Map()
function Map(){
var args = arguments;
var arr = [];
if(args.length){
for(var i=0;i<args[0].length;i++){
arr[i] = args[0][i];
}
}
this.get=function(x){
for(i=0;i<arr.length;i++){
if(arr[i]&&arr[i][0] === x){
return arr[i][1];
}
}
}
this.set=function(x,y){
var val = [x,y];
for(i=0;i<arr.length;i++){
if(arr[i]){
if(arr[i][0] === x){
arr[i][1] = y;
}else {
arr.push(val);
}
}
}
var setVal = [x,y];
arr.push(setVal);
}
this.has = function(x){
var flag = false;
for(i=0;i<arr.length;i++){
if(arr[i]&&arr[i][0] === x){
flag = true;
break;
}
}
return flag;
}
this.delete = function(x){
var flag = false;
var num;
for(i=0;i<arr.length;i++){
if(arr[i]&&arr[i][0] === x){
flag = true;
num = i
break;
}
}
if(flag){
delete arr[num];
return true;
}else {
return flag;
}
}
}
测素数:
function ss(x){
var x = parseInt(x);
if(x === 1){return false;}
for(var i=2;i<x;i++){
if(x%i===0){
return false;
}
}
return true;
}
添加事件处理程序封装对象
var eventUtil = {
addHandler:function(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent("on"+type,handler);
}else {
element["on"+type] = handler;
}
},
removeHandler:function(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.dettachEvent){
element.dettachEvent("on"+type,handler);
}else {
element["on"+type] = handler;
}
},
getEvent:function(event){
return event?event:window.event;
},
getType:function(event){
return event.type;
},
getElement:function(event){
return event.target||event.srcElement;
},
stopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancleBubble = true;
}
},
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault()
}else{
event.returnValue = false;
}
}
}
getElementsByClassName替代:
function getEleByClass(className,parent){
var oParent = parent?document.getElementById(parent):document;
var elements = oParent.getElementsByTagName("*");
var eles = [];
for(var i=0,len=elements.length;i<len;i++){
if(elements[i] === className){
eles.push(elements[i]);
}
}
return eles;
}
冒泡排序
for(var i = 0;i<a.length-1;i++){
for(var j = 0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
a[j]+=a[j+1];
a[j+1] = a[j]-a[j+1];
a[j] -= a[j+1];
}
}
}
等腰三角
for(var i = 0;i<5;i++){
for(var j = 0,str = [];j<9;j++){
str[str.length] = (j<4-i||j>=i+5)?" ":"*";
}
console.log(str.join(""));
}
正三角
for(var i = 0;i<5;i++){
for(var j = 0,str = [];j<i+1;j++){
str.push("*");
}
console.log(str.join(""));
}
另一边三角
for(var i = 0;i<5;i++){
for(var j = 0,str = [];j<5;j++){
str[str.length] = (j<4-i)?" ":"*";
}
console.log(str.join(""));
}
indexOf遍历
index = -1
while(index= str.indexOf("",index+1)!=-1){}
index = str.length;
while(index = str.lastIndexOf("",index-1)!=-1){.....if(index<=0){break;}}
双色球
var reds = [];
var blue;
var r;
var flag;
while(reds.length<6){
flag = true;
r = Math.floor(Math.random()*34);
for(var i=0;i<reds.length;i++){
if(reds[i]==r){
flag = false;
break;
}
}
if(flag){reds.push(r);}
}
blue = Math.floor(Math.random()*34);
console.log("红球 "+reds.join(" ")+" 蓝球 "+blue);
递归
var tabs = [];
function getChildren(parent){
var children = parent.childNodes;
if(children){
tabs.push("\t");
for(var i=0, len=children.length;i<len;i++){
console.log(tabs.join("")+"|-"+(parent.nodeType != 3?parent.nodeName:parent.nodeValue));
if(children[i].childNodes.length){
arguments.callee(children[i]);
}
}
tabs.pop();
}
}
getChildren(document);
递归
var iterator =
document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,false);
var node = null;
var blank = [];
while(node = iterator.nextNode()){
console.log(blank.join("")+"|-"+(node.nodeType!=3?node.nodeName:node.nodeValue));
if(node.childNodes.length){
blank.push("\t");
}else{
var next = iterator.nextNode();
if(next){
while((node = node.parentNode)!==next.parentNode){
blank.pop();
}
}else{
break;
}
iterator.previousNode();
}
}
documentElement?documentElement!==”HTML”:false;
documentElement&&documentElement!==”HTML”?true:false;
先检查documentElement是否存在,若存在再执行第一句
function isHTML(doc){
return doc.createElement("p").nodeName === doc.createElement("P").nodeName
}
e.ownerDocument 获得元素的document
function fixContains(a,b){
try{
while(b = b.parentNode){
if(b === a){
return true;
}
}
return false;
}catch(e){
return false;
}
}