Java Out Of Memory 阿里巴巴 search keras vue异步加载组件 后台界面 jquery删除子元素 matlab图像识别 bentley软件介绍 oracle添加索引 string转16进制 mysql删除表 python怎么使用 python写入文件 java的string java中continue linux系统教程 linux密码 python开发实例 ntscan 销售单软件 东方头条邀请码 苹果滚动截屏 图片批量处理工具 spoonwep 谷歌地球用不了 苹果x银色 男网红头像 编程之家 淘宝店铺采集 工程地质手册 正则表达式数字 0x000008e 方正徐静蕾字体 德玛上单天赋 上单艾克出装 adb安装 python求平均值 笔底春风 Ivideo
当前位置: 首页 > 学习教程  > 编程语言

面试小题

2021/1/13 20:42:39 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

深拷贝浅拷贝 深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。 深拷贝 深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制。 深拷贝后的对象与原来的对象是完全…

  • 深拷贝浅拷贝

深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。

  • 深拷贝
    深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制。 深拷贝后的对象与原来的对象是完全隔离的,互不影响, 对一个对象的修改并不会影响另一个对象。
  • 浅拷贝
    浅拷贝是会将对象的每个属性进行依次复制,但是当对象的属性值是引用类型时,实质复制的是其引用,当引用指向的值改变时也会跟着变化。
    可 以 使 用 for in 、 Object.assign 、 扩 展 运 算 符 … 、Array.prototype.slice()、Array.prototype.concat() ,递归等递归函数实现深拷贝

代码

 var arr = [1, 2, 3, 4, {
            name: '张三'
        }, 5, 6, {
            name: '李四'
        }]
      function fn(arr) {
            var arr2 = []
            if(!(arr instanceof Object)) return arr
            for (let k in arr) {
                if (arr[k] instanceof Array) {
                    arr2[k] = arr[k]
                } else {
                    arr2[k] = fn(arr[k])
                }
            }
            return arr2
        }
        let obj = fn(arr)
        arr[4].name = '你好'
        console.log(arr, obj);

  • 原型

  1. 原型的概念
    JavaScript 的所有对象中都包含了一个 [proto] 内部属性,这个属性所对应的就是自身的原型
    JavaScript 的函数对象,除了原型 [proto] 之外,还有 prototype 属性,当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型 [proto]

  2. 原型链的概念
    当一个对象调用自身不存在的属性/方法时,首先会在当前对象中寻找,找不到就到对象中的原型中去寻找,
    找到就返回,找不到就去原型中的原型去寻找,层层往上,直到找到方法/属性或undefined为止
    这种层层寻找的机制就叫 原型链


  • 类型校验

  1. 数据类型
    基本数据类型:number string undefined null boolean symbol 存放在栈中
    引用数据类型:object array function 存放在堆中
  2. 判断基本数据类型 (typeof )
    Typeof()判断引用数据类型 只能判断出 function
    用法:
var a = "1234"
console.log(typeof(a))
  1. 判断对象和数组 (instanceof)
var arr = [1, 2, 3]
var obj = {
	name: "张三"
}
console.log(arr instanceof Object)
  1. constructor:不能用于undefined 与 null 因为它们没有构造函数
  2. object.prototype.toString.call():判断一个变量类型的最准确的方式
  3. 使用jquery中的$.type()方法也可以实现

  • 递归深拷贝

 var arr = [1, 2, 3, 4, {
            name: '张三'
        }, 5, 6, {
            name: '李四'
        }]
      function fn(arr) {
            var arr2 = []
            if(!(arr instanceof Object)) return arr
            for (let k in arr) {
                if (arr[k] instanceof Array) {
                    arr2[k] = arr[k]
                } else {
                    arr2[k] = fn(arr[k])
                }
            }
            return arr2
        }
        let obj = fn(arr)
        arr[4].name = '你好'
        console.log(arr, obj);

本文链接: http://www.dtmao.cc/news_show_600427.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?