zoukankan      html  css  js  c++  java
  • javascript 面试题目

    1. javascripttypeof返回哪些数据类型

     返回六大类型  number  string  object  function  undefined

    例:typeof 37==='number' typeof "str"==='string'

    typeof  true==='boolean'  typeof  undefined==='undefined'

    typeof  {a:1}==='object'   typeof  function(){}==='function'

       

    2. 例举3种强制类型转换和2种隐式类型转换?

    强制类型:(parseInt,parseFloat,number)

       Boolean(value):把值转换成Boolean类型;    Number(value):把值转换成数字(整型或浮点数)

     String(value):把值转换成字符串。

    隐式类型:(== - ===)

    1. split() join() 的区别

     

      前者是切割成数组的形式,后者是将数组转换成字符串

      Split( ) 字符串方法 将字符串用分隔符将它们连接起来返回字符串数      

      join()  数组方法   把数组的所有元素放入一个字符串。

    简单地说,如果你用split(),是把一串字符串(根据某个分隔符)分成若干个元素存放在一个数组里。

    join是把数组中的字符串连接成一个长串,可以大体上认为是split的逆操作。

     

    4. 数组方法pop() push() unshift() shift()

      push()像数组尾部追加元素  pop()尾部删除 unshift()头部添加     shift()头部删      

    例 var Array=["A" ,"J"];
       Array.push("L");//尾部增加
       Array.pop();//尾部删除
       Array.unshift("Q") //头部追加
       Array.shift() //头部删除
       console.log(Array//最后数组里面的元素还是原来的

     

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

    区别 普通添加事件的方法不支持添加多个事件,最下面的事件会覆盖上面的,

    而事件绑定(addEventListener)方式添加事件可以添加多个。

    例子

    var btn = document.getElementById("btn");

    btn.onclick = function () { alert('普通事件1');//不执行 }

    btn.onclick = function () { alert('普通事件2');//弹出 }

    // 上面用普通方法添加两个事件,下面用事件绑定添加两个事件。 btn.addEventListener('click', function () { alert('事件绑定1');//弹出 },false); btn.addEventListener('click', function () { alert('事件绑定2');//弹出 },false);

     

    1. IEDOM事件流的区别

    IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件

    1.执行顺序不一样

    冒泡型事件模型: button->div->body (IE事件流)
    捕获型事件模型: body->div->button (Netscape事件流)

    DOM事件模型: body->div->button->button->div->body (先捕获后冒泡)
    2.参数不一样

    IE使用:
    [Object].attachEvent("name_of_event_handler", fnHandler); //绑定函数
    [Object].detachEvent("name_of_event_handler", fnHandler); //移除绑定
    DOM使用:
    [Object].addEventListener("name_of_event", fnHandler, bCapture); //绑定函数
    [Object].removeEventListener("name_of_event", fnHandler, bCapture); //移除绑定
    3.事件加不加on

    Dom事件通过addEventListener添加元素监听事件,第一个参数是事件名称没有on开头(onclick要写成click)
    4.this指向问题

     IE下利用attachEvent注册的处理函数调用时this指向不再是先前注册事件的元素,这时的this为window

     dom通过addEventListener注册的处理函数调用时this指的是先前注册事件的元素

    7. IE和标准下有哪些兼容性的写法

    Var ev = ev || window.event
    document.documentElement.clientWidth || document.body.clientWidth
    Var target = ev.srcElement||ev.target

    8. callapply的区别

    call, apply作用就是借用别人的方法来调用,就像调用自己的一样.

    call方法:
    语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

    则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

    apply方法:
    语法:apply([thisObj[,argArray]])

    apply:最多只能有两个参数——新this对象和一个数组

    更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)对应的apply写法为:

    func.apply(func1,[var1,var2,var3])

    9. b继承a的方法

    定义a 并扩展其原型属性
       function a(){

       }
       a.prototype.myname="猫";
       a.prototype.myage=18;
       a.prototype.study=function () {
           alert(111)
       };

      var m=new a();
       m.study();
       document.write(m.myname)

       function b() {

       };
     b继承a的方法
       b.prototype=a.prototype;
       var m1=new b();
       m1.study();
       document.write(m1.myage)

     

     

    1. 如何阻止事件冒泡和默认事件

     

    阻止默认事件

      1.javescript中,return flase可以阻止默认事件,但必须加在onmousedown事件中,down的事儿干完了,再加return flase

    2、在自定义函数addEvent中,return flase会失效,请使用事件对象来进行阻止。ev.preventDefault();//阻止默认事件。

    3、、在低版本的IE中这些都不好使,需在onmousemove事件中调用obj.setCapture&&obj.setCapture();并且在onmouseup事件中清除obj.releaseCapture&&obj.releaseCapture();

    阻止事件冒泡:

    1、当子级的事件触发时,其父级的事件也被触发了。

    2、冒泡跟它们在页面中的显示位置无关,只要在html结构中两者是属于父子关系,就存在事件冒泡。

    3、阻止事件冒泡必须加在子级的身上。通过事件对象进行阻止。ev.cancelBubble=true;

     

     

     

  • 相关阅读:
    【java】详解java多线程
    【java】switch case支持的6种数据类型
    【Java】详解java对象的序列化
    【java】详解I/O流
    【java】自定义异常类
    【java】详解集合
    【NotePade++】NotePade++如何直接编译运行java文件
    【java】JVM的内存区域划分
    Unicode和UTF的关系
    【java】解析java中的数组
  • 原文地址:https://www.cnblogs.com/yaomengli/p/6921918.html
Copyright © 2011-2022 走看看