2018-08-22日前端面试题

1.实现一个对页面某个节点的拖曳?如何做?(使用原生JS)

给需要拖拽的节点绑定mousedown, mousemove, mouseup事件
mousedown事件触发后,开始拖拽
mousemove时,需要通过event.clientX和clientY获取拖拽位置,并实时更新位置
mouseup时,拖拽结束
需要注意浏览器边界的情况



     
           
           
           
     
     
           

2.深拷贝

基本类型不存在,引用类型需要考虑是否需要深拷贝;
基本类型包括:number,string,boolean,null,undefined
引用类型包括:Object,Array,Date,RegExp,Function

  • 对象中没有函数的情况下可以使用 JSON.stringify(obj)然后使用JSON.parse(obj)实现;
      var _default = {
            "one":"1",
            "two":[1,2,3,4],
            "three":function(){
                console.log("函数");
            }
        };
        var string_default = JSON.stringify(_default);
        var parse_default = JSON.parse(string_default);
        console.log(_default);
        console.log(string_default);
        console.log(parse_default);

结果如下:

2018-08-22日前端面试题_第1张图片
image.png
  • Object.assign()

Object.assign方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。语法Object.assign(target, ...sources)
target
目标对象。
sources
源对象。


        var _default = {
            "one": "1",
            "two": [1, 2, 3, 4],
            "three": function () {
                console.log("函数");
            }
        };
        var copy_default = Object.assign({},_default);
        console.log(_default);
        console.log(copy_default);

2018-08-22日前端面试题_第2张图片
image.png

你可能感兴趣的:(2018-08-22日前端面试题)