大三狗记录一下看到别人分享的面试题
感谢各位大佬的分享和分析
如何判断一个变量是对象还是数组?
要判断变量是对象还是数组,使用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属性的区别
//今天就先到这了呀2018.3.20,明天加油!title属性的功能是提示,可以为链接添加描述性文字 alt属性是属于img标签的,当图片无法显示的时候图片位置就会显示alt属性的内容 如果img标签里加上title属性,如<img src="#" alt="图片失效就到我出现啦" title="鼠标移上图片位置我就会出现啦" /> 复制代码
//叮,粗线了
Vue双向绑定实现原理Object.defineProperty
了解一下
具体实现原理,看了大佬们的实现方式
target属性规定哪个DOM元素触发了该事件<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> 复制代码
Object.defineProperty()
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象语法
Object.defineProperty(obj,prop,descriptor)
obj
要在其上定义属性的对象。prop
要定义或修改的属性的名称descriptor
将被定义或修改的属性描述符