前端面试题

149 阅读1分钟

大三狗记录一下看到别人分享的面试题
感谢各位大佬的分享和分析
如何判断一个变量是对象还是数组?
要判断变量是对象还是数组,使用prototype.toString.call()是最好的,千万不能用typeof来进行判断,因为它们返回的都是object

function isObjarry(){
    if(Object.prototype.toString.call(value)=== "[object Array]"){
        console.log("'value'是数组");
    }else if(Object.prototype.toString.call(value)=== "[object Object]"){
        console.log("'value'是对象");
    }else{
        console.log("'value'既不是对象也不是数组");
    }
}

html中title属性和alt属性的区别
title属性的功能是提示,可以为链接添加描述性文字
alt属性是属于img标签的,当图片无法显示的时候图片位置就会显示alt属性的内容
如果img标签里加上title属性,如

<img src="#" alt="图片失效就到我出现啦" title="鼠标移上图片位置我就会出现啦" />

//今天就先到这了呀2018.3.20,明天加油!

//叮,粗线了
Vue双向绑定实现原理
Object.defineProperty了解一下 具体实现原理,看了大佬们的实现方式


<body>
    <div id="app">
        <input type="text" id="txt">
        <p id="show-txt">
    </div>
    <script>
        var obj = {};   //创建一个新对象
        //在对象中添加存取描述符
        Object.defineProperty(obj,'txt',{
           get:function(){
               return obj;
               },
            set:function(newValue){
                document.getElementById('txt').value = newValue;
                document.getElementById('show-txt').innerHTML = newValue;
                }
            })
        document.addEventListener('keyup',function(e){
            obj.txt = e.target.value
        })
    <script>
</body>

target属性规定哪个DOM元素触发了该事件
Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象

语法

Object.defineProperty(obj,prop,descriptor)
obj 要在其上定义属性的对象。
prop要定义或修改的属性的名称
descriptor将被定义或修改的属性描述符