js函数对象的总结
来源:互联网 发布:linux退出vi编辑命令 编辑:程序博客网 时间:2024/06/01 09:15
修改用字面量创建的对象的原型的方法;
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 = -1while(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; }}
0 0
- js函数对象的总结
- JS常用的对象函数总结归纳
- JS常用的对象函数总结归纳
- js的类、对象与函数,个人总结
- JS对象的选取函数
- JS函数的写法总结
- 总结常用的js函数
- 关于JS接口创建对象的总结
- JS的event对象--知识点总结
- js遍历对象的方法总结
- JS中创建对象的方法总结
- js Array对象的常用方法总结
- js客户端数据库的对象与函数
- js客户端数据库的对象与函数
- javascript学习 - js的Date对象函数
- js--面向对象--构造函数的继承
- JS—特殊的对象~函数
- JS—特殊的对象~函数
- 单链表
- 逆波兰表达式
- scala中用implicit实现依赖注入
- android开发步步为营之80:android多线程总结
- 类型进阶
- js函数对象的总结
- (2)Java开发和运行环境的搭建详解
- [kuangbin带你飞]数论基础的简单题解
- 第4周项目4- 建设双链表算法库
- 文件代码模板的使用
- W3school学习笔记之HTML5
- block 传值 遇到的出错点:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)
- js学习注意知识
- 用Tor进入“深网”