javascript面试题


  1. javascript的typeof返回哪些数据类型

    Object number function boolean underfind
    
  2. 数组方法pop() push() unshift() shift()

    Push()尾部添加 pop()尾部删除
    Unshift()头部添加 shift()头部删除

  3. 事件处理:

    事件类型(event type);
    事件目标(event target)是发生的事件或与之相关的对象
    事件处理程序(event handler)或事件监听程序(event listener)是处理或响应事件的函数。
    事件对象(event object)是与特定事件相关切包含有关该事件详细信息的对象。事件对象作为参数传递给事件处理程序函数(不包括IE8及之前版本,在这些浏览器中需要通过window.event来获取)。所有事件对象都有用来制定事件类型的type属性和指定时间目标的target属性(IE8之前的版本中用srcElement来获取)。
    事件传播(event propagation)是浏览器决定哪个对象触发其事件处理程序的过程。对于某个对象的特定事件(比如Window对象的load事件),必须是不能传播的。事件传播有两种方式:事件冒泡(bubble)和事件捕获(evnet capturing)。
    focus和blur事件不会冒泡,其他所有表单事件都可以。3级DOM事件规范标准化了focusin和focusout来代替它们(但是firefox貌似都不支持)。

  4. 事件绑定和普通事件有什么区别

    假设有个对象obj1,用on+event绑定事件如下:

    obj1.onclick=function1;
    obj1.onclick=function2;
    

    这里的onclick是作为obj1的属性绑定事件,function1会被function2覆盖而只执行function2;
    因此取消绑定事件只需:

    obj1.onclick=null;
    

    在支持W3C标准的浏览器中绑定事件用的是addEventListener:

    obj1.addEventListener("click",change1,false);
    obj1.addEventListener("click",change2,false);
    

    事件执行顺序跟绑定顺序一样,先执行change1,再执行change2
    事件取消绑定:

    obj1.removeEventListener("click",change1,false);
    

    另外在IE里面,绑定事件要用attachEvent绑定:

    obj1.attachEvent("onclick",change1);
    obj1.attachEvent("onclick",change2);
    

    事件取消绑定:

    obj1.detachEvent("onclick",change1);
    

    绑定是事件名称同样要以on为前缀,而且没有后面是否冒泡的boolean值,但是这种执行顺序变了,前面那种方法是依次,这种就是倒序,先执行change2,再执行change1.

  5. call和apply的区别

    Object.call(this,obj1,obj2,obj3)
    Object.apply(this,arguments)
    
  6. ajax请求时,如何解释json数据

    使用eval,parse,鉴于安全性考虑 使用parse更靠谱

  7. 事件委托是什么

    让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!

  8. 解释jsonp的原理,以及为什么不是真正的ajax

    动态创建script标签,回调函数
    Ajax是页面无刷新请求数据操作

  9. javascript的本地对象,内置对象和宿主对象

    本地对象为array obj regexp等可以new实例化,具体有:

    Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError 
    

    内置对象为Global Math 等不可以实例化的
    宿主为浏览器自带的document,window 等

    所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
    

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>