当前位置: 首页 > 面试题库 >

这两种展开运算符的方式有什么区别呢?

单淳
2023-03-14
本文向大家介绍这两种展开运算符的方式有什么区别呢?相关面试题,主要包含被问及这两种展开运算符的方式有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下

本题在于考察展开运算符...属于浅拷贝
function Super(val) {
this.value = val || 'init'
}
Super.prototype.getTxt = function () {
console.log(可以访问Super上的方法);
}

// getTxt方法存在于原型链上: o3.proto.getTxt
const o3 = new Super('OMG')
const obj = { 'key1': 'value1', 'key2': 'value2' }

// 第一种赋值方法没有问题,将o3与obj合并
const o1 = { ...obj, o3 }

// 第二种赋值方法,将o3展开在重新赋值给另一个叫o3的键值
// 展开运算是一种浅拷贝,所以不会拷贝原型链Super上的方法,他的原型是Object
const o2 = { ...obj, o3: { ...o3 } }

console.log(o1.o3.value, typeof o1.o3.getTxt) // OMG, function
console.log(o2.o3.value, typeof o2.o3.getTxt) // OMG, undefined

来源:http://jsrun.pro/C8WKp/edit

 类似资料:
  • 问题内容: 与 是否有EventEmitter.call(this)所需的功能? 问题答案: 是否有EventEmitter.call(this)所需的功能? 显然,是的: 由于所有使用的方法都会检查其是否存在,因此,如果您忽略了调用,我希望不会有太大的改变,但是我不确定将来是否成立。 有迹象表明,做足够多的其他构造 不 容忍被省略,所以这是很好的做法,只是 始终 构造一个实例时调用构造函数。

  • 问题内容: 我试图在Web应用程序中验证公司名称,并且使用此正则表达式模式 上述模式将拒绝值 10004 Estates Limited 但是如果我提出0-9,那么模式变成 然后就可以了。正则表达式和模式是新手,但我知道我应该使用更多它,因此我想对此进行澄清。谢谢。 问题答案: 是字符类中的一个特殊字符,因此是歧义的,可能会赋予和和含义,因此本质上是字符。 要在字符类中包含连字符减号,您必须将其转

  • 此行不显示可能的有损转换,而 上面的一行显示错误。有什么原因吗?

  • 问题内容: Java中的和运算符有什么区别? 问题答案: 是算术右移,是逻辑右移。 在算术移位中,将扩展符号位以保留数字的符号性。 例如:用8位表示的将是(因为最高有效位的权重为负)。使用算术移位将其右移一位,你将得到1。但是,逻辑右移并不关心该值是否可能表示带符号的数字;它只是将所有内容移至右侧,并从左侧填充0。使用逻辑移位将右移一位将得到。

  • 问题内容: 和之间有什么区别?它们都创建一个类的实例,我不确定它们之间有什么区别。 问题答案: 在操作创建一个是静态已知的(在编译时),并可以调用你想创建对象的任何构造一个类型的新对象。这是创建对象的首选方式- 快速且JVM对它进行了许多积极的优化。 是一个动态构造,用于查找具有特定名称的类。它比使用速度慢,因为无法将对象的类型硬编码到字节码中,并且因为JVM可能必须执行权限检查以确保您有权创建对