Javascript中是否有复制构造函数?

极度严重的鸡肉

我正在用javascript创建对象。但是,我知道我正在使用新的className()运算符。我想知道是否可以创建副本构造函数,以便在创建新对象(即var object1 = object2)时,仅将object2中的成员变量复制到object1中,而不将其复制到指针中。谢谢!

苏贝

JS不会自动为任何对象生成构造函数-复制,移动或其他方式。您必须自己定义它们。

最接近的是类似的东西Object.create,它需要一个原型和一个现有的对象来复制属性。

要定义副本构造函数,可以从以下几行开始:

function Foo(other) {
  if (other instanceof Foo) {
    this.bar = other.bar;
  } else {
    this.bar = other;
  }
}

var a = new Foo(3);
var b = new Foo(a);

document.getElementById('bar').textContent = b.bar;
<pre id="bar"></pre>

使用它来支持深度复制只是相同模式的递归:

function Foo(other) {
  if (other instanceof Foo) {
    this.bar = new Bar(other.bar);
  } else {
    this.bar = new Bar(other);
  }
}

function Bar(other) {
  if (other instanceof Bar) {
    this.val = other.val;
  } else {
    this.val = other;
  }
}

Bar.prototype.increment = function () {
  this.val++;
}

Bar.prototype.fetch = function () {
  return this.val;
}

var a = new Foo(3);
var b = new Foo(a);
a.bar.increment();

document.getElementById('a').textContent = a.bar.fetch();
document.getElementById('b').textContent = b.bar.fetch();
<pre id="a"></pre>
<pre id="b"></pre>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript中,构造函数是否在类中是必需的?

在python中复制构造函数?

是否可以在Java中扩展没有构造函数的类?

是否有必要在构造函数中同步块?

如果删除复制构造函数,是否没有隐式move构造函数?

如何在JavaScript中的构造函数中复制对象

没有默认构造函数的奇怪的C ++复制构造函数

javascript中带有构造函数的对象

避免在子类中复制所有构造函数

复制构造函数中的C ++调用函数

复制构造函数是否可行?

确定路径在类构造函数中是否有效

在构造函数中启动Task是否有问题?

字符串是否在其构造函数中复制数据

是否可以让“命名构造函数”返回私有构造的,不可移动的,不可复制的std :: optional <T>?

“移动构造函数”是否总是比“复制构造函数”更高效?

检查是否调用了复制构造函数

复制在C ++中具有自指针的类的构造函数?

是否有熊猫DataFrame的非复制构造函数

是否应该始终为具有原始指针成员的类中的深层复制指针定义一个复制构造函数?

C ++中的复制构造函数

在没有复制删除的情况下,是否可以确保在析构函数之前调用复制/移动构造函数?

javascript中带有参数的构造函数

gcc 4.8.2在此默认默认构造函数中调用复制构造函数时是否正确?

是否可以有一个默认的复制构造函数和一个模板化转换构造函数?

构造函数中的调用顺序是否有保证

如果通过引用对象代替函数中的变量,它是否调用复制构造函数?

在 promise 构造函数中解析 promise 是否有效?

Dart 中是否有等效于 Javascript 的 `resolve` 函数(来自 Promise 构造函数)?