Javascript Angular 2如何防止特定变量的数据绑定

Javascript Angular 2如何防止特定变量的数据绑定,javascript,angular,typescript,Javascript,Angular,Typescript,所以我需要防止特定变量的数据绑定。我想这样做: // data is mostly an object in my case. // it would be nice if there's a global solution function(data) { d = data; // variable that changes on user input oldD = data; // variable that shouldn't change on user input }

所以我需要防止特定变量的数据绑定。我想这样做:

// data is mostly an object in my case.
// it would be nice if there's a global solution
function(data) {
    d = data; // variable that changes on user input
    oldD = data; // variable that shouldn't change on user input
}

但是,每当我实现这样的代码时,当d变量发生变化时,旧的d变量就会发生变化。我想阻止这种情况发生。但如何防止这种情况发生呢?

您需要在不指定旧对象的引用的情况下指定值

下面是JavaScript/Angular的解决方案

let oldD = Object.assign({}, data);

希望这有帮助。

您需要赋值,而不必指定旧对象的引用

下面是JavaScript/Angular的解决方案

let oldD = Object.assign({}, data);

希望这对您有所帮助。

您可能正在寻找如何克隆对象

function(data) {
    d = data; // variable that changes on user input  

    // creates brand new object with the same data
    let oldD = Object.create(data.constructor.prototype);
    data.constructor.apply(oldD);
}

可能您正在寻找,如何克隆对象

function(data) {
    d = data; // variable that changes on user input  

    // creates brand new object with the same data
    let oldD = Object.create(data.constructor.prototype);
    data.constructor.apply(oldD);
}

什么样的变量是
数据
?它是原始类型(数字、字符串、布尔值)、数组还是具有属性的对象?抱歉,添加了一些额外的注释什么类型的变量是
数据
?它是原始类型(数字、字符串、布尔值)、数组还是具有属性的对象?抱歉,添加了一些额外的注释谢谢,这很有帮助,您可以提供一些有关它如何工作的额外信息吗?当您使用等号复制值时,它实际上指定了数据的引用。这就是绑定的工作原理。具有相同引用的多个变量。通过Object.assign()只复制值,而不复制实际引用。因此,您的旧数据将有一个自己的新引用,因此不会更改。哦,好的,括号表示目标谢谢,这很有帮助,您可以提供一些关于它如何工作的附加信息吗?当您使用等号复制值时,它实际上分配了数据引用。这就是绑定的工作原理。具有相同引用的多个变量。通过Object.assign()只复制值,而不复制实际引用。因此,您的旧版本将有一个自己的新引用,因此不会更改。哦,好的,括号表示targetDheeraj的解决方案效率更高,而且有效,但感谢您的回答。您也可以在此处查看差异以了解更多信息。Dheeraj的解决方案效率更高,效果更好,但感谢您的回答,您也可以在这里查看差异以获得更多想法。