javascript 新知识
document.compatMode 属性
BackCompat: Standards-compliant mode is not switched on. (Quirks Mode) 标准模式
CSS1Compat: Standards-compliant mode is switched on. (Standards Mode) 怪癖模式
//实现继承
function Super(x, y) { this.x = x; this.y = y; } function Sub(x, y, z) { Super.call(this, x, y); //为子类型的对象实例添加超类型的属性,子类型的对象实例作为超类型的构造函数中的this值 this.z = z; //添加子类型的扩展属性 }
__proto__指向对象的原型ie所有版本都不支持
//hasOwnProperty检测某个对象上是否有某个属性,不支持dom对象,不支持检测原型中的属性 // 得到false, 因为不能检测原型链中的属性 "hello".hasOwnProperty("split"); //String对象的原型上本来就有这个属性,自然返回true String.prototype.hasOwnProperty("split");
nodeType 比nodeName更好,文本节点#text document #document 元素节点相当于tagName
hasChildNodes是否有子节点
attributes 元素上所有的属性组成的数组
getAttribute(name)——等于attributes.getNamedItem(name).value
setAttribute(name, newValue)——等于attribute.getNamedItem(name).value = newValue
removeAttribute(name)——等于attributes.removeNamedItem(name)
createComment("注释");//创建注释节点 createDocumentFragment()//创建文档碎片节点 createElement createTextNode
以上四种属性浏览器都支持,其他的一些存在兼容性问题,尽量不要用
清空一个数组的方式,将其leng设置为0
document.documentMode:ie8+ ie的版本
ECMAScript认为undefined是从null派生出来的
//测试 setTimeout 每秒执行的次数 200次/s var fireCount = 0; var start = new Date(); var timer = setInterval(function(){ if(new Date() - start >1000) { console.log(fireCount); clearInterval(timer); return ; } fireCount++; },0) //换成while测试会达到400万次/s var fireCount = 0; var start = new Date(); while(true){ if(new Date() - start >1000) { console.log(fireCount); clearInterval(timer); break; } fireCount++; } 这个跟函数本身有关,本身就是被设计成慢吞吞的,所以这两个函数计时并不精准