美文网首页
js小问题

js小问题

作者: 织田信长 | 来源:发表于2015-12-06 21:51 被阅读20次

    1 js中typeof、instanceof与constructor
    typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.语法为typeof(data) 或 typeof data
    instanceof则为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型语法为 o instanceof A
    js中constructor较少使用,如果不是搜索到相关construtor相关的资料,我之前从没有注意到js还有这个函数。
    使用typeof的一个不好的地方就是它会把Array还有用户自定义函数都返回为object
    这里还要注意,constructor只能对已有变量进行判断,而typeof则可对未声明变量进行判断(返回undefined)
    2 addEventListener和attachEvent
    **Mozilla中: **addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文档节点、document、window 或 XMLHttpRequest。 type: 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 useCapture :是否使用捕捉,一般用 false 。例如:document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); **IE中: **target.attachEvent(type, listener); target: 文档节点、document、window 或 XMLHttpRequest。 type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。
    listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);});
    3 不同浏览器中event 问题
    //window.event
    IE:有window.event对象
    FF:没有window.event对象。可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)
    解决方法:var event = event || window.event;
    //鼠标当前坐标
    IE:event.x和event.y。
    FF:event.pageX和event.pageY。
    通用:两者都有event.clientX和event.clientY属性。
    //鼠标当前坐标(加上滚动条滚过的距离)
    IE:event.offsetX和event.offsetY。
    FF:event.layerX和event.layerY。

    相关文章

      网友评论

          本文标题:js小问题

          本文链接:https://www.haomeiwen.com/subject/dqcehttx.html