首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试题:深拷贝和浅拷贝(超级详细,有内存图)

就像你家里的衣柜一样,也分了不同的区域:挂西装的区域,放袜子的区域等等,我相信每个人都会把这两个东西放在不同的区域。...]=10),再根据另外一张纸的地址也找到了你家,你发现你一百万在(不要给我说被人拿了) 如果在上面的基础上增加一句代码:arr[0]=10;那么内存将会有如下变化: ​​ 三、基本类型和引用类型作为函数参数的区别...(这个可以不看) 1、基本类型作为函数参数 2、引用类型作为函数参数: 四、深拷贝和浅拷贝: 终于说到了深拷贝和浅拷贝。...这样,一劳永逸,以后在碰到任何跟引用类型有关的话题(:继承时,父类的属性是引用类型)都没有问题。...json对象,那么用递归的方式 //如果对象属性对象(引用类型),属性属性也是引用类型,即层层嵌套很多.怎么办,只能递归 //如下对象,要复制: var p = { "id":"007", "

41020

前端面试题

(加载时间指感知的时间或者实际加载时间) · 1.优化图片 · 2.图像格式的选择(GIF:提供的颜色较少,可用在一些对颜色要求不高的地方) · 3.优化CSS(压缩合并css,margin-top,...解释一下你对盒模型的理解,以及如何在CSS中告诉浏览器使用不同的盒模型来渲染你的布局。 关于盒模型请看文章CSS布局与定位。...请看文章JavaScript模块化编程 3.4. 描述以下变量的区别:null,undefined?...当函数参数期望是对象时,被用作参数传入。 当函数的返回值期望是对象时,被用作返回值传出。 作为对象原型链的终点。 undefined表示”缺少值”,就是此处应该有一个值,但是还没有定义。...调用函数时,应该提供的参数没有提供,该参数等于undefined。 对象没有赋值的属性,该属性的值为undefined。 函数没有返回值时,默认返回undefined。 该如何检测它们?

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

金九银十: 50 个JS 必须懂的面试题为你助力

一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数参数类型 JS 变量arguments表示传递给函数参数。...局部变量 - 局部变量仅在定义它的函数中可见,函数参数始终是该函数的本地参数。 问题13:JS 中“this”运算符的用途是什么? this关键字引用它所属的对象。 根据使用位置,它具有不同的值。...Property —— 分配给属性的值,type =“text”,value ='Name'等。...问题 36:JS的原始/对象类型如何在函数中传递? 两者之间的一个区别是,原始数据类型是通过值传递的,对象是通过引用传递的。 值传递:意味着创建原始文件的副本。...delete操作符用于删除对象属性。X是一个具有foo属性对象,由于它是一个自调用函数,所以咱们将从对象X中删除foo属性

6.5K31

50 个JS 必须懂的面试题为你助力金九银十

一个匿名函数可以分配给一个变量,它也可以作为参数传递给另一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数参数类型 JS 变量arguments表示传递给函数参数。...局部变量 - 局部变量仅在定义它的函数中可见,函数参数始终是该函数的本地参数。 问题13:JS 中“this”运算符的用途是什么? this关键字引用它所属的对象。 根据使用位置,它具有不同的值。...Property —— 分配给属性的值,type =“text”,value ='Name'等。...问题 36:JS的原始/对象类型如何在函数中传递? 两者之间的一个区别是,原始数据类型是通过值传递的,对象是通过引用传递的。 值传递:意味着创建原始文件的副本。...delete操作符用于删除对象属性。X是一个具有foo属性对象,由于它是一个自调用函数,所以咱们将从对象X中删除foo属性

4.4K30

为什么一定要弄一个Builder内部类?

作者:大宽宽 知乎链接:https://www.zhihu.com/question/326142180/answer/697172067 使用Builder大概有两个用途 解决具有大量参数的构造函数不好用的问题...为了让object的状态始终valid,我要求width和height必须都是正数,并且width与height积不得超过100。...not good r.setWidth(2); // r is invalid, not good r.setHeight(3); // r is valid 为了避免这种invalid状态的发生,就要求使用构造函数一次性初始化好所有的成员...为了得到一个不可变的object,是不可能使用任何setter方法的,必须使用构造函数一上来就把所有数据都设置好。因为多参数构造函数不好用,所以这里就得靠builder。...比如函数间传递一些参数,从接口或者数据库读出来的数据要有个存的地方等。

73420

【TypeScript 演化史 — 第六章】对象扩展运算符和 rest 运算符及 keyof 和查找类型

它接受两个参数:一个 URL 和一个 options 对象,options 包含请求的任何自定义设置。 在应用程序中,可以封装对fetch()的调用,并提供默认选项和覆盖给定请求的特定设置。...一个对象的不同属性可以有完全不同的类型,咱们甚至不知道 obj 是什么样子的。 那么如何在 TypeScript 中编写这个函数呢?...先尝试一下: image.png 有了这两个类型注释,obj 必须是对象,key 必须是字符串。咱们现在已经限制了两个参数的可能值集。...索引类型查询 有了 keyof,咱们现在可以改进 prop 函数的类型注解。我们不再希望接受任意字符串作为 key 参数。...相反,咱们要求参数 key 实际存在于传入的对象的类型上 function prop (obj: T, key: K) { return obj[key]

3.1K50

react中的事件绑定

React中的事件绑定特点React中的事件绑定具有以下特点:以驼峰命名:React中的事件名采用驼峰命名方式,onClick、onChange等。...使用JSX语法:在JSX中,通过将事件处理函数作为属性值来绑定事件。使用事件对象:事件处理函数接收一个事件对象作为参数,可以通过事件对象获取相关信息。...传递参数有时候,我们需要在事件处理函数中传递额外的参数。为了实现这一点,我们可以使用一个匿名函数来调用事件处理函数,并将参数传递给它。...以下是一个示例,展示了如何在点击事件中传递参数:import React from 'react';class Button extends React.Component { handleClick...使用事件对象在事件处理函数中,可以通过参数获取事件对象,并从中获取相关信息,事件的类型、目标元素等。

3K30

36 个JS 面试题为你助力金九银十(面试必读)

10.如何在JS中动态添加/删除对象属性?...1.null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是: (1) 作为函数参数,表示该函数参数不是对象。 (2) 作为对象原型链的终点。...(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。 (3)对象没有赋值的属性,该属性的值为undefined。 (4)函数没有返回值时,默认返回undefined。...例如,如果两个对象具有相同的属性和值,则它们严格不相等。 15. 如何在现有函数中添加新属性 只需给现有函数赋值,就可以很容易地在现有函数中添加新属性。...(注:...代表省略了其他一些属性) 从打印咱们可以看出,module.exports和exports一开始都是一个空对象{},实际上,这两个对象指向同一块内存。

7.2K30

何在Node.js中编写和运行您的第一个程序

在Node.js的上下文中, 流是可以接收数据的对象stdout流,或者可以输出数据的对象网络套接字或文件。 对于stdout和stderr流,发送给它们的任何数据都将显示在控制台中。...对象是一个全局 Node.js对象,它包含与当前运行的Node.js进程相关的函数和数据。...argv属性是一个字符串数组,包含给予程序的所有命令行参数。...process.env对象是环境变量名称与作为字符串存储的值之间的简单映射。 与JavaScript中的所有对象一样,您可以通过在方括号中引用其名称来访问单个属性。...现在用两个参数重新运行程序: node echo.js HOME PWD 你会看到以下输出: Output /home/sammy /home/sammy/first-program forEach函数确保打印

8.4K30

盘点一下 Python 和 JavaScript 的主要区别(详细)

例如,在内容是一个对象的情况下,这意味着对象的内容(例如,它的属性)可以被更改。...你可以使用比函数定义中定义的参数更少或更多的参数来调用函数。默认情况下,为缺少的参数分配 undefined 值,并且可以使用 arguments 对象访问其他参数。...注意如何使用三个参数调用函数,但是函数定义的参数列表中仅包含两个参数。 ? 提示:要获取传递给函数参数数量,可以在函数内使用 arguments.length。...构造函数属性 构造函数是一种特殊的方法,当创建类的新实例(新对象)时会调用该方法,它的主要目的是初始化实例的属性。...在Python中,用于初始化新实例的构造函数称为 init(带有两个前导下划线和尾部下划线)。创建类的实例以初始化其属性时,将自动调用此方法。

6.1K30

36 个JS 面试题为你助力金九银十(面试必读)

10.如何在JS中动态添加/删除对象属性?...1.null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是: (1) 作为函数参数,表示该函数参数不是对象。 (2) 作为对象原型链的终点。...(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。 (3)对象没有赋值的属性,该属性的值为undefined。 (4)函数没有返回值时,默认返回undefined。...例如,如果两个对象具有相同的属性和值,则它们严格不相等。 15. 如何在现有函数中添加新属性 只需给现有函数赋值,就可以很容易地在现有函数中添加新属性。...(注:...代表省略了其他一些属性) 从打印咱们可以看出,module.exports和exports一开始都是一个空对象{},实际上,这两个对象指向同一块内存。

6K20

【TypeScript 演化史 -- 6】对象扩展运算符和 rest 运算符及 keyof 和查找类型

它接受两个参数:一个 URL 和一个 options 对象,options 包含请求的任何自定义设置。 在应用程序中,可以封装对fetch()的调用,并提供默认选项和覆盖给定请求的特定设置。...一个对象的不同属性可以有完全不同的类型,咱们甚至不知道 obj 是什么样子的。 那么如何在 TypeScript 中编写这个函数呢?...先尝试一下: 有了这两个类型注释,obj 必须是对象,key 必须是字符串。咱们现在已经限制了两个参数的可能值集。...索引类型查询 有了 keyof,咱们现在可以改进 prop 函数的类型注解。我们不再希望接受任意字符串作为 key 参数。...相反,咱们要求参数 key 实际存在于传入的对象的类型上 function prop (obj: T, key: K) { return obj[key]

2.5K30

第三十四期:逆向思维来学习前端

何在不看源码的情况下推测源码中的内容 如何在不看源码的情况下推测源码中的内容,这个问题是在写React的项目的时候闪现出来的。...一个组件 组件里有useEffect方法 useEffect有两个参数 useEffect第一个参数是个函数function useEffect第二个参数是个数组 组件是个函数,返回了一个dom 从我们已经知道的信息...抛开那些复杂的逻辑,钩子函数其实也是模板中的一个方法,只是它被用来隔离变化而已,当模板中的某些属性发生变化时,钩子函数会执行不同的策略,仅此而已。...对了,apply方法,apply方法的第二参参数就是数组或类数组对象。 所以我们可以推测,useEffect内部应该是调用了apply,将第一个函数作为谁的方法执行了。...望诸公共勉

65620

Python和JavaScript在使用上有什么区别?

我们使用它来定义Python中的条件、函数、循环和所有的复合语句。 以下是示例: ?...例如,在内容是对象的情况下,这意味着对象的内容(例如,它的属性)可以被改变。...您可以使用比函数定义中定义的参数更少或更多的参数来调用函数。缺省的参数被赋予未定义的值,额外的参数可以通过Arguments对象访问。 ?...构造函数属性 构造函数是一种特殊的方法,当创建类的新实例(新对象)时会调用该方法。它的主要目的是初始化实例的属性。...在Python中,调用了初始化新实例的构造函数init (带有两个前导和尾随下划线)。创建类的实例以初始化其属性时,将自动调用此方法。其参数列表定义了创建实例必须传递的值。

4.8K20

《Objective C编程》笔记

2.消息:消息发送(指令)必须写在一对括号中,并且必须包含以下两个部分。 指针,指向接收消息的对象。 方法名,要触发的方法的方法名。...5.合并存取属性的便捷方法: 在.h中国,通过@property声明属性 @property int w; 在impl中,要求编译器根据@property声明自动合成(synthesize)出存取方法...你要负责在不许要使用该对象的时候释放以下时部分常见会“传输”所有权的方法:alloc(后会跟一个init方法),copy和mutableCopy。...26.c语言辅助函数,由于不属于函数内任何一部分,故应该在.h中位于@interfce之前,在.m中应该位于import之后,@implement之前插入函数详细实现逻辑。...d.copy:copy特性要求拷贝传入的对象,并将新对象赋给实例变量。 注意:有些类会有两个版本:一个可修改的,一个不可修改的。无论是哪个版本,copy方法都会返回不可修改的版本。

58930

重学JavaScript匿名函数

当某个函数第一次被调用时,会创建一个执行环境及相应的作用域链,并把作用域链赋值给一个特殊的内部属性([Scope])。然后,使用 this、arguments和其他命名参数的值来初始化函数的活动对象。...我们在创建函数的时候会创建一个预先包含全局变量对象的作用域链,这个作用域链被保存在内部的[Scope]属性中,当调用函数时,会为函数创建一个执行环境,然后通过赋值函数的[Scope]属性中的对象构建起执行环境的作用域链...内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。如果把外部作用域中的this对象保存在一个闭包能够访问的变量里,就可以让闭包访问该对象了。...任何在函数中定义的变量都可以认为是私有变量,因为不能在函数的外部访问这些变量。私有变量包括函数参数、局部变量和在函数内部定义的其他函数。...8、重学jsJavaScript面向对象的程序设计(创建对象) 9、重学jsJavaScript面向对象的程序设计(继承)

1.5K20

JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)

Boolean类型的值有两个:true、false。Undefined和Null 类型都只有一个值,分别是undefined和null。...2.9、JavaScript 全局对象 全局属性函数可用于所有内建的 JavaScript 对象。 全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。...但是在解析的时候,前一种写法会被解析器自动提升到代码的头部,因此违背了函数应该先定义后使用的要求,所以建议定义函数时,全部采用后一种写法。...:要插入的节点和参照节点 insertAfter() 参照节点之后插入节点,两个参数:要插入的节点和参照节点 replaceChild() 替换节点,两个参数:要插入的节点和要替换的节点(被移除...,只对外暴露一个对象 越漂亮越好 6.6)、请写出以下两个正则表达式并使用两个文本框模拟用户提交数据时验证: //身份证 //411081199004235955 41108119900423595x

1.8K40

JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)

Boolean类型的值有两个:true、false。Undefined和Null 类型都只有一个值,分别是undefined和null。...全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象函数属性。全局对象不是任何对象属性,所以它没有名称。...但是在解析的时候,前一种写法会被解析器自动提升到代码的头部,因此违背了函数应该先定义后使用的要求,所以建议定义函数时,全部采用后一种写法。...:要插入的节点和参照节点 insertAfter() 参照节点之后插入节点,两个参数:要插入的节点和参照节点 replaceChild() 替换节点,两个参数:要插入的节点和要替换的节点(被移除) removeChild...,只对外暴露一个对象 越漂亮越好 6.6)、请写出以下两个正则表达式并使用两个文本框模拟用户提交数据时验证: //身份证 //411081199004235955 41108119900423595x

3.7K70
领券