07 2013 档案
摘要:Array.prototype.slice.call(arguments)我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)如:1 var a={length:2,0:'first',1:'second'};2 Array.prototype.slice.call(a);// ["first", "second"]3 4 var a={lengt
阅读全文
摘要:function getStyle(obj, attr) { //注意:有些属性浏览器没有默认样式,必须确保css中设置了才能获取到,否则有可能出错 if (obj.currentStyle) {//IE return obj.currentStyle[attr]; } else {//FF, chrome return getComputedStyle(obj, false)[attr]; }}
阅读全文
摘要://页面加载时不存在,加载完时再添加function loadScript(url) {//外部文件 var script = document.createElement("script"); script.type = "text/javascript"; script.src = url; document.body.appendChild(script);}function loadScriptString(code) {//行内样式 var script = document.createElement("script");
阅读全文
摘要:getAttribute():获取dom节点属性,带一个参数,表示要获取的属性使用方法:object.getAttribute("id");setAttribute():设置dom节点属性,带两个参数,前面为设置的属性,后者为要设置的值使用方法:object.setAttribute("id", "name");removeAttribute():删除属性,带一个参数,表示要删除的属性使用方法:object.removeAttribute("class");
阅读全文
摘要://history对象:保存着用户上网的历史记录//history是window对象的属性,因此每个浏览器窗口,每个标签页乃至每个框架都有自己的history对象与特定的window对象关联//go()方法可以在用户的历史纪律中任意跳转,可以向前也可以向后//go()可以传递一个参数,可以为整数,也可以为字符串history.go(-1);//后退一页history.go(1);//前进一页history.go(2);//前进两页history.go("baidu.com");//跳转到最近的baidu.com页面//back():浏览器的后退按钮效果 forward():
阅读全文
摘要:function getQueryStringArgs() { //取得查询字符串并去掉开头的问号 var qs = (location.search.length >0? location.search.substring(1) : ""); //保存数据的对象 var args= {}; //取得每一项 var items = qs.split("&"); var item = null, name = null, value = null; //逐个将每一项添加到args对象中 for (var i=0; ...
阅读全文
摘要://闭包:指有权访问另一个函数作用域中的变量的函数function fun1() { var result = []; for (var i=0; i");//10 10 10 10 ...}for (var i=0; i");//0 1 2 3 ... 9}
阅读全文
摘要://递归函数:可以理解为函数内部调用自身使用。//调用方法有两种,第一种直接使用自身的函数名,第二种使用arguments.callee,arguments.callee是一个指向正在执行的函数的指针function factorial(num) { //不推荐使用,factorial变了的时候,里面的也得变 if (num <= 1) { return 1; } else { return num * factorial(num-1); }}//使用arguments.callee不会出现这种问题var anotherFactorial =...
阅读全文
摘要:fnName1();//1fnName2();//error 未定义function fnName1() {//代码执行之前被加载到作用域中 alert(1);}var fnName2 = function () {//代码执行到这行的时候才定义 alert(2);}fnName1();//1fnName2();//2
阅读全文
摘要:组合继承//组合继承(有时候也较伪经典继承):将原型链和借用构造函数的技术组合到一块//思路:借用构造函数继承属性、原型链继承方法。避免了借用构造函数的原型方法不可复用,只有构造函数的属性可以复用的弊端function SuperType(name) { this.name = name; this.colors = ["red", "blue"];}SuperType.prototype.sayName = function () { alert(this.name);}function SubType(name, age) { //继承了SuperT
阅读全文
摘要:function object(o) { function F() {} F.prototype = o; return new F();}function inheritPrototype(subType, superType) { var prototype = object(superType.prototype);//创建对象 prototype.constructor = subType;//增强对象 subType.prototype = prototype;//指定对象}function SuperType(name) { this.na...
阅读全文
摘要:function object(o) { function F() {} F.prototype = o; return new F();}function createAnother(original) { var clone = object(original); clone.sayName = function () { alert(this.name); } return clone;}var person = { name: "Tom", colors: ["red", "blue"]}var p1 = create...
阅读全文
摘要://浅复制function object(o) { function F() {} F.prototype = o; return new F();}var person = { name: "Tom", colors: ["red", "blue"]}var p1 = object(person);var p2 = object(person);p1.colors.push("black");console.log(p2.colors)console.log(person);
阅读全文
摘要://组合继承(有时候也较伪经典继承):将原型链和借用构造函数的技术组合到一块//思路:借用构造函数继承属性、原型链继承方法。避免了借用构造函数的原型方法不可复用,只有构造函数的属性可以复用的弊端function SuperType(name) { this.name = name; this.colors = ["red", "blue"];}SuperType.prototype.sayName = function () { alert(this.name);}function SubType(name, age) { //继承了SuperType2
阅读全文
摘要://借用构造函数(constructor stealing),有时候也叫伪造对象或者经典继承//弊端:原型方法不可复用,只有构造函数的属性可以复用function SuperType() { this.colors = ["red", "blue"];}function SubType() { SuperType.call(this); //SuperType.apply(this);}var instance1 = new SubType();instance1.colors.push("black");console.log(in
阅读全文
摘要:function SuperType() { this.property = true;}SuperType.prototype.getSuperValue = function () { return this.property;}function SubType() { this.subproperty = false;}//继承了SuperTypeSubType.prototype = new SuperType();SubType.prototype.getSubValue = function () { return this. subproperty;}va...
阅读全文
摘要:/**直接创建原型方法与对象字面量创建原型方法的区别在于*直接创建原型方法:会在原有的原型上添加方法*对象字面量创建原型方法:直接替换原有的原型(会切断原型链)*///直接创建原型方法function Person(name, age) { this.name = name; this.age = age;}Person.prototype.sayName = function (){ alert(this.name);}Person.prototype.sayAge = function (){ alert(this.age);}var person = new Pe...
阅读全文

浙公网安备 33010602011771号