我有一个对象x 。 我想将其复制为对象y ,以使对y更改不会修改x 。 我意识到,复制从内置JavaScript对象派生的对象将导致额外的不需要的属性。 这不是问题,因为我正在复制自己的文字构造对象之一。

如何正确克隆JavaScript对象?


#1楼

您可以克隆对象,并使用单行代码从上一个引用中删除任何引用。 只需做:

var obj1 = { text: 'moo1' };
var obj2 = Object.create(obj1); // Creates a new clone without referencesobj2.text = 'moo2'; // Only updates obj2's text propertyconsole.log(obj1, obj2); // Outputs: obj1: {text:'moo1'}, obj2: {text:'moo2'}

对于当前不支持Object.create的浏览器/引擎,可以使用此polyfill:

// Polyfill Object.create if it does not exist
if (!Object.create) {Object.create = function (o) {var F = function () {};F.prototype = o;return new F();};
}

#2楼

我只是想在这篇文章中添加到所有Object.create解决方案中,以至于Nodejs无法以所需的方式工作。

在Firefox中,

var a = {"test":"test"};
var b = Object.create(a);
console.log(b);´

{test:"test"}

在nodejs中

{}

#3楼

如果您不在对象中使用Date ,function,undefined或Infinity,那么一个非常简单的衬里就是JSON.parse(JSON.stringify(object))

 const a = { string: 'string', number: 123, bool: false, nul: null, date: new Date(), // stringified undef: undefined, // lost inf: Infinity, // forced to 'null' } console.log(a); console.log(typeof a.date); // Date object const clone = JSON.parse(JSON.stringify(a)); console.log(clone); console.log(typeof clone.date); // result of .toISOString() 

这适用于包含对象,数组,字符串,布尔值和数字的所有类型的对象。

另请参阅本文有关浏览器的结构化克隆算法的文章,该算法在与工作人员之间发布消息时使用。 它还包含用于深度克隆的功能。


#4楼

如果您可以使用浅表副本,那么underscore.js库提供了一个clone方法。

y = _.clone(x);

或者你可以像扩展它

copiedObject = _.extend({},originalObject);

#5楼

这是对A. Levy的代码的一种改编,它也可以处理函数和多个/循环引用的克隆-这意味着,如果要克隆的树中的两个属性是同一对象的引用,则克隆的对象树将具有这些属性指向引用对象的一个​​克隆。 这也解决了循环依赖的情况,如果不加以处理,则会导致无限循环。 该算法的复杂度为O(n)

function clone(obj){var clonedObjectsArray = [];var originalObjectsArray = []; //used to remove the unique ids when finishedvar next_objid = 0;function objectId(obj) {if (obj == null) return null;if (obj.__obj_id == undefined){obj.__obj_id = next_objid++;originalObjectsArray[obj.__obj_id] = obj;}return obj.__obj_id;}function cloneRecursive(obj) {if (null == obj || typeof obj == "string" || typeof obj == "number" || typeof obj == "boolean") return obj;// Handle Dateif (obj instanceof Date) {var copy = new Date();copy.setTime(obj.getTime());return copy;}// Handle Arrayif (obj instanceof Array) {var copy = [];for (var i = 0; i < obj.length; ++i) {copy[i] = cloneRecursive(obj[i]);}return copy;}// Handle Objectif (obj instanceof Object) {if (clonedObjectsArray[objectId(obj)] != undefined)return clonedObjectsArray[objectId(obj)];var copy;if (obj instanceof Function)//Handle Functioncopy = function(){return obj.apply(this, arguments);};elsecopy = {};clonedObjectsArray[objectId(obj)] = copy;for (var attr in obj)if (attr != "__obj_id" && obj.hasOwnProperty(attr))copy[attr] = cloneRecursive(obj[attr]);                 return copy;}       throw new Error("Unable to copy obj! Its type isn't supported.");}var cloneObj = cloneRecursive(obj);//remove the unique idsfor (var i = 0; i < originalObjectsArray.length; i++){delete originalObjectsArray[i].__obj_id;};return cloneObj;
}

一些快速测试

var auxobj = {prop1 : "prop1 aux val", prop2 : ["prop2 item1", "prop2 item2"]};var obj = new Object();
obj.prop1 = "prop1_value";
obj.prop2 = [auxobj, auxobj, "some extra val", undefined];
obj.nr = 3465;
obj.bool = true;obj.f1 = function (){this.prop1 = "prop1 val changed by f1";
};objclone = clone(obj);//some tests i've made
console.log("test number, boolean and string cloning: " + (objclone.prop1 == obj.prop1 && objclone.nr == obj.nr && objclone.bool == obj.bool));objclone.f1();
console.log("test function cloning 1: " + (objclone.prop1 == 'prop1 val changed by f1'));
objclone.f1.prop = 'some prop';
console.log("test function cloning 2: " + (obj.f1.prop == undefined));objclone.prop2[0].prop1 = "prop1 aux val NEW";
console.log("test multiple references cloning 1: " + (objclone.prop2[1].prop1 == objclone.prop2[0].prop1));
console.log("test multiple references cloning 2: " + (objclone.prop2[1].prop1 != obj.prop2[0].prop1));

#6楼

function clone(src, deep) {var toString = Object.prototype.toString;if(!src && typeof src != "object"){//any non-object ( Boolean, String, Number ), null, undefined, NaNreturn src;}//Honor native/custom clone methodsif(src.clone && toString.call(src.clone) == "[object Function]"){return src.clone(deep);}//DOM Elementsif(src.nodeType && toString.call(src.cloneNode) == "[object Function]"){return src.cloneNode(deep);}//Dateif(toString.call(src) == "[object Date]"){return new Date(src.getTime());}//RegExpif(toString.call(src) == "[object RegExp]"){return new RegExp(src);}//Functionif(toString.call(src) == "[object Function]"){//Wrap in another method to make sure == is not true;//Note: Huge performance issue due to closures, comment this :)return (function(){src.apply(this, arguments);});}var ret, index;//Arrayif(toString.call(src) == "[object Array]"){//[].slice(0) would soft cloneret = src.slice();if(deep){index = ret.length;while(index--){ret[index] = clone(ret[index], true);}}}//Objectelse {ret = src.constructor ? new src.constructor() : {};for (var prop in src) {ret[prop] = deep? clone(src[prop], true): src[prop];}}return ret;
};

#7楼

由于mindeavor指出要克隆的对象是“文字构造的”对象,因此一种解决方案可能是简单地多次生成该对象,而不是克隆该对象的实例:

function createMyObject()
{var myObject ={...};return myObject;
}var myObjectInstance1 = createMyObject();
var myObjectInstance2 = createMyObject();

#8楼

使用Lodash:

var y = _.clone(x, true);

#9楼

一种特别不优雅的解决方案是使用JSON编码来制作没有成员方法的对象的深层副本。 方法是对目标对象进行JSON编码,然后通过对其进行解码,获得所需的副本。 您可以根据需要解码任意数量的副本。

当然,函数不属于JSON,因此这仅适用于没有成员方法的对象。

这种方法非常适合我的用例,因为我将JSON Blob存储在键值存储中,并且当它们在JavaScript API中作为对象公开时,每个对象实际上都包含该对象原始状态的副本,因此我们可以在调用者更改了暴露对象后计算增量。

var object1 = {key:"value"};
var object2 = object1;object2 = JSON.stringify(object1);
object2 = JSON.parse(object2);object2.key = "a change";
console.log(object1);// returns value

#10楼

互联网上的大多数解决方案都有几个问题。 因此,我决定进行跟进,包括为什么不接受接受的答案。

起始情况

我想复制一个Javascript Object及其所有子Object及其子Object ,依此类推。 但是由于我不是普通的开发人员,所以我的Object具有正常的 propertiescircular structures甚至nested objects

因此,让我们首先创建一个circular structure和一个nested object

function Circ() {this.me = this;
}function Nested(y) {this.y = y;
}

让我们将所有内容整合到一个名为aObject

var a = {x: 'a',circ: new Circ(),nested: new Nested('a')
};

接下来,我们要将a复制到名为b的变量中并对其进行突变。

var b = a;b.x = 'b';
b.nested.y = 'b';

您知道这里发生了什么,因为如果没有,您甚至不会落在这个伟大的问题上。

console.log(a, b);a --> Object {x: "b",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}b --> Object {x: "b",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}

现在让我们找到一个解决方案。

JSON格式

我尝试的第一次尝试是使用JSON

var b = JSON.parse( JSON.stringify( a ) );b.x = 'b';
b.nested.y = 'b';

不要浪费太多时间,您会得到TypeError: Converting circular structure to JSON

递归副本(可接受的“答案”)

让我们看一下接受的答案。

function cloneSO(obj) {// Handle the 3 simple types, and null or undefinedif (null == obj || "object" != typeof obj) return obj;// Handle Dateif (obj instanceof Date) {var copy = new Date();copy.setTime(obj.getTime());return copy;}// Handle Arrayif (obj instanceof Array) {var copy = [];for (var i = 0, len = obj.length; i < len; i++) {copy[i] = cloneSO(obj[i]);}return copy;}// Handle Objectif (obj instanceof Object) {var copy = {};for (var attr in obj) {if (obj.hasOwnProperty(attr)) copy[attr] = cloneSO(obj[attr]);}return copy;}throw new Error("Unable to copy obj! Its type isn't supported.");
}

看起来不错吧? 它是对象的递归副本,还可以处理其他类型,例如Date ,但这不是必需的。

var b = cloneSO(a);b.x = 'b';
b.nested.y = 'b';

递归和circular structures不能很好地协同工作... RangeError: Maximum call stack size exceeded

本机解决方案

与我的同事吵架后,我的老板问我们发生了什么,经过一番谷歌搜索,他找到了一个简单的解决方案 。 它称为Object.create

var b = Object.create(a);b.x = 'b';
b.nested.y = 'b';

该解决方案是在一段时间之前添加到Javascript的,甚至可以处理circular structure

console.log(a, b);a --> Object {x: "a",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}b --> Object {x: "b",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}

...您会看到,它不适用于内部的嵌套结构。

用于本机解决方案的polyfill

就像IE 8一样,在旧版浏览器中还有一个针对Object.create的polyfill。这有点像Mozilla的建议,当然,它并不完美,并且会导致与本机解决方案相同的问题。

function F() {};
function clonePF(o) {F.prototype = o;return new F();
}var b = clonePF(a);b.x = 'b';
b.nested.y = 'b';

我将F放在范围之外,因此我们可以看一下instanceof告诉我们什么。

console.log(a, b);a --> Object {x: "a",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}b --> F {x: "b",circ: Circ {me: Circ { ... }},nested: Nested {y: "b"}
}console.log(typeof a, typeof b);a --> object
b --> objectconsole.log(a instanceof Object, b instanceof Object);a --> true
b --> trueconsole.log(a instanceof F, b instanceof F);a --> false
b --> true

与本机解决方案相同的问题,但输出会差一些。

更好(但不是完美)的解决方案

进行深入研究时,我发现了与此问题类似的问题( 在Javascript中,当执行深度复制时,由于属性为“ this”,如何避免循环? ),但有一个更好的解决方案。

function cloneDR(o) {const gdcc = "__getDeepCircularCopy__";if (o !== Object(o)) {return o; // primitive value}var set = gdcc in o,cache = o[gdcc],result;if (set && typeof cache == "function") {return cache();}// elseo[gdcc] = function() { return result; }; // overwriteif (o instanceof Array) {result = [];for (var i=0; i<o.length; i++) {result[i] = cloneDR(o[i]);}} else {result = {};for (var prop in o)if (prop != gdcc)result[prop] = cloneDR(o[prop]);else if (set)result[prop] = cloneDR(cache);}if (set) {o[gdcc] = cache; // reset} else {delete o[gdcc]; // unset again}return result;
}var b = cloneDR(a);b.x = 'b';
b.nested.y = 'b';

让我们看一下输出...

console.log(a, b);a --> Object {x: "a",circ: Object {me: Object { ... }},nested: Object {y: "a"}
}b --> Object {x: "b",circ: Object {me: Object { ... }},nested: Object {y: "b"}
}console.log(typeof a, typeof b);a --> object
b --> objectconsole.log(a instanceof Object, b instanceof Object);a --> true
b --> trueconsole.log(a instanceof F, b instanceof F);a --> false
b --> false

满足了这些要求,但是仍然存在一些较小的问题,包括将nestedcircinstance更改为Object

共享叶子的树的结构不会被复制,它们将成为两个独立的叶子:

        [Object]                     [Object]/    \                       /    \/      \                     /      \|/_      _\|                 |/_      _\|  [Object]    [Object]   ===>  [Object]    [Object]\        /                 |           |\      /                  |           |_\|  |/_                 \|/         \|/[Object]               [Object]    [Object]

结论

最后一种使用递归和缓存的解决方案可能不是最好的,但它是对象的真实副本。 它处理简单的propertiescircular structuresnested object ,但在克隆时会弄乱它们的实例。

jsfiddle


#11楼

对于使用AngularJS的用户,此库中还有直接方法来克隆或扩展对象。

var destination = angular.copy(source);

要么

angular.copy(source, destination);

更多angular.copy 文档 ...


#12楼

我已经编写了自己的实现。 不确定是否算是更好的解决方案:

/*a function for deep cloning objects that contains other nested objects and circular structures.objects are stored in a 3D array, according to their length (number of properties) and their depth in the original object.index (z)||||||                      depth (x)|_ _ _ _ _ _ _ _ _ _ _ _/_/_/_/_/_/_/_/_/_//_/_/_/_/_/_/_/_/_//_/_/_/_/_/_/.....//.................//.....            //                 //------------------object length (y)    /
*/

以下是实现:

function deepClone(obj) {var depth = -1;var arr = [];return clone(obj, arr, depth);
}/**** @param obj source object* @param arr 3D array to store the references to objects* @param depth depth of the current object relative to the passed 'obj'* @returns {*}*/
function clone(obj, arr, depth){if (typeof obj !== "object") {return obj;}var length = Object.keys(obj).length; // native method to get the number of properties in 'obj'var result = Object.create(Object.getPrototypeOf(obj)); // inherit the prototype of the original objectif(result instanceof Array){result.length = length;}depth++; // depth is increased because we entered an object herearr[depth] = []; // this is the x-axis, each index here is the deptharr[depth][length] = []; // this is the y-axis, each index is the length of the object (aka number of props)// start the depth at current and go down, cyclic structures won't form on depths more than the current onefor(var x = depth; x >= 0; x--){// loop only if the array at this depth and length already have elementsif(arr[x][length]){for(var index = 0; index < arr[x][length].length; index++){if(obj === arr[x][length][index]){return obj;}}}}arr[depth][length].push(obj); // store the object in the array at the current depth and lengthfor (var prop in obj) {if (obj.hasOwnProperty(prop)) result[prop] = clone(obj[prop], arr, depth);}return result;
}

#13楼

在ECMAScript 6中,存在Object.assign方法,该方法将所有可枚举的自身属性的值从一个对象复制到另一个对象。 例如:

var x = {myProp: "value"};
var y = Object.assign({}, x); 

但是请注意,嵌套对象仍会复制为引用。


#14楼

对克隆简单对象感兴趣:

JSON.parse(JSON.stringify(json_original));

源: 如何不通过引用将JavaScript对象复制到新变量?


#15楼

在一行代码中克隆Javascript对象的一种优雅方法

Object.assign方法是ECMAScript 2015(ES6)标准的一部分,可以完全满足您的需求。

var clone = Object.assign({}, obj);

Object.assign()方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。

阅读更多...

支持旧版浏览器的polyfill

if (!Object.assign) {Object.defineProperty(Object, 'assign', {enumerable: false,configurable: true,writable: true,value: function(target) {'use strict';if (target === undefined || target === null) {throw new TypeError('Cannot convert first argument to object');}var to = Object(target);for (var i = 1; i < arguments.length; i++) {var nextSource = arguments[i];if (nextSource === undefined || nextSource === null) {continue;}nextSource = Object(nextSource);var keysArray = Object.keys(nextSource);for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {var nextKey = keysArray[nextIndex];var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);if (desc !== undefined && desc.enumerable) {to[nextKey] = nextSource[nextKey];}}}return to;}});
}

#16楼

您可以简单地使用spread属性复制没有引用的对象。 但是要小心(请参阅注释),“副本”仅位于最低的对象/数组级别。 嵌套属性仍然是参考!


完整克隆:

let x = {a: 'value1'}
let x2 = {...x}// => mutate without references:x2.a = 'value2'
console.log(x.a)    // => 'value1'

克隆二级引用:

const y = {a: {b: 'value3'}}
const y2 = {...y}// => nested object is still a references:y2.a.b = 'value4'
console.log(y.a.b)    // => 'value4'

JavaScript实际上实际上不支持深度克隆。 使用实用程序功能。 例如Ramda:

http://ramdajs.com/docs/#clone


#17楼

每个MDN :

  • 如果要浅拷贝,请使用Object.assign({}, a)
  • 对于“深层”副本,请使用JSON.parse(JSON.stringify(a))

不需要外部库,但您需要首先检查浏览器的兼容性 。


#18楼

旧问题的新答案! 如果您高兴地将ECMAScript 2016(ES6)与Spread Syntax一起使用 ,这很容易。

keepMeTheSame = {first: "Me!", second: "You!"};
cloned = {...keepMeTheSame}

这为对象的浅表副本提供了一种干净的方法。 进行深层复制(意味着要递归地嵌套每个对象中的每个值的新副本)需要上述较重的解决方案。

JavaScript不断发展。


#19楼

在ES-6中,您可以简单地使用Object.assign(...)。 例如:

let obj = {person: 'Thor Odinson'};
let clone = Object.assign({}, obj);

一个很好的参考在这里: https : //googlechrome.github.io/samples/object-assign-es6/


#20楼

let clone = Object.assign( Object.create( Object.getPrototypeOf(obj)), obj)

ES6解决方案,如果您想(浅)克隆一个类实例而不仅仅是一个属性对象。


#21楼

好的,假设您在下面有这个对象并且想要克隆它:

let obj = {a:1, b:2, c:3}; //ES6

要么

var obj = {a:1, b:2, c:3}; //ES5

答案主要取决于您使用哪种ECMAscript ,在ES6+ ,您可以简单地使用Object.assign进行克隆:

let cloned = Object.assign({}, obj); //new {a:1, b:2, c:3};

或使用像这样的传播算子:

let cloned = {...obj}; //new {a:1, b:2, c:3};

但是,如果使用ES5 ,则可以使用几种方法,但是可以使用JSON.stringify ,只需确保不使用要复制的大量数据即可,但是在许多情况下,它可能是一种方便的方式,如下所示:

let cloned = JSON.parse(JSON.stringify(obj)); 
//new {a:1, b:2, c:3};, can be handy, but avoid using on big chunk of data over and over

#22楼

使用jQuery,您可以使用extend进行浅表复制

var copiedObject = jQuery.extend({}, originalObject)

随后对copiedObject更改将不会影响originalObject ,反之亦然。

或进行深复制

var copiedObject = jQuery.extend(true, {}, originalObject)

#23楼

在ECMAScript 2018中

let objClone = { ...obj };

请注意, 嵌套对象仍将被复制为参考。


#24楼

我认为有一个简单可行的答案。 在深度复制中,有两个问题:

  1. 使属性彼此独立。
  2. 并使方法在克隆对象上保持活动状态。

因此,我认为一个简单的解决方案是先进行序列化和反序列化,然后再对其进行赋值以复制函数。

let deepCloned = JSON.parse(JSON.stringify(source));
let merged = Object.assign({}, source);
Object.assign(merged, deepCloned);

尽管这个问题有很多答案,但我希望这个问题也能有所帮助。


#25楼

对于深层复制和克隆,先JSON.stringify然后再JSON.parse对象:

obj = { a: 0 , b: { c: 0}};
let deepClone = JSON.parse(JSON.stringify(obj));
obj.a = 5;
obj.b.c = 5;
console.log(JSON.stringify(deepClone)); // { a: 0, b: { c: 0}}

#26楼

摘自本文: 如何在Java语言中复制数组和对象,作者Brian Huisman:

Object.prototype.clone = function() {var newObj = (this instanceof Array) ? [] : {};for (var i in this) {if (i == 'clone') continue;if (this[i] && typeof this[i] == "object") {newObj[i] = this[i].clone();} else newObj[i] = this[i]} return newObj;
};

#27楼

这是您可以使用的功能。

function clone(obj) {if(obj == null || typeof(obj) != 'object')return obj;    var temp = new obj.constructor(); for(var key in obj)temp[key] = clone(obj[key]);    return temp;
}

#28楼

在JavaScript中对任何对象执行此操作都不是简单或直接的。 您将遇到错误地从对象的原型中选取应保留在原型中而不应复制到新实例的属性的问题。 例如,如果要将clone方法添加到Object.prototype ,如一些答案所示,则需要显式跳过该属性。 但是,如果还有其他您不知道的其他方法添加到Object.prototype或其他中间原型,该怎么办? 在这种情况下,您将复制不应复制的属性,因此需要使用hasOwnProperty方法检测无法预见的非本地属性。

除了不可枚举的属性外,当您尝试复制具有隐藏属性的对象时,还会遇到更棘手的问题。 例如, prototype是函数的隐藏属性。 同样,对象的原型使用属性__proto__引用,该属性也被隐藏,并且不会通过在源对象的属性上进行迭代的for / in循环进行复制。 我认为__proto__可能特定于Firefox的JavaScript解释器,并且在其他浏览器中可能有所不同,但是您可以理解。 并不是所有的东西都可以列举。 如果知道隐藏属性的名称,则可以复制它,但是我不知道有什么方法可以自动发现它。

寻求优雅解决方案的另一个障碍是正确设置原型继承的问题。 如果源对象的原型为Object ,然后简单地创建一个新的通用对象{}的工作,但如果源的原型是一些后裔Object ,那么你将要丢失从原型您使用跳过了其他成员hasOwnProperty过滤器,或在原型中,但首先不能枚举。 一种解决方案可能是调用源对象的constructor属性来获取初始复制对象,然后在属性上进行复制,但是这样您仍然不会获得不可枚举的属性。 例如, Date对象将其数据存储为隐藏成员:

function clone(obj) {if (null == obj || "object" != typeof obj) return obj;var copy = obj.constructor();for (var attr in obj) {if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];}return copy;
}var d1 = new Date();/* Executes function after 5 seconds. */
setTimeout(function(){var d2 = clone(d1);alert("d1 = " + d1.toString() + "\nd2 = " + d2.toString());
}, 5000);

d1的日期字符串将比d2的日期字符串晚5秒。 使一个Date与另一个Date相同的方法是调用setTime方法,但这特定于Date类。 尽管我很乐意弄错,但我认为没有解决该问题的通用解决方案!

当我不得不实施常规的深层复制时,以假定只复制一个简单的ObjectArrayDateStringNumberBoolean来折衷。 后三种类型是不可变的,因此我可以执行浅表复制,而不必担心它会更改。 我进一步假设ObjectArray包含的任何元素也将是该列表中6个简单类型之一。 这可以通过以下代码来完成:

function clone(obj) {var copy;// Handle the 3 simple types, and null or undefinedif (null == obj || "object" != typeof obj) return obj;// Handle Dateif (obj instanceof Date) {copy = new Date();copy.setTime(obj.getTime());return copy;}// Handle Arrayif (obj instanceof Array) {copy = [];for (var i = 0, len = obj.length; i < len; i++) {copy[i] = clone(obj[i]);}return copy;}// Handle Objectif (obj instanceof Object) {copy = {};for (var attr in obj) {if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);}return copy;}throw new Error("Unable to copy obj! Its type isn't supported.");
}

只要对象和数组中的数据形成树形结构,上述功能就可以对我提到的6种简单类型充分发挥作用。 也就是说,对象中对同一数据的引用不止一个。 例如:

// This would be cloneable:
var tree = {"left"  : { "left" : null, "right" : null, "data" : 3 },"right" : null,"data"  : 8
};// This would kind-of work, but you would get 2 copies of the 
// inner node instead of 2 references to the same copy
var directedAcylicGraph = {"left"  : { "left" : null, "right" : null, "data" : 3 },"data"  : 8
};
directedAcyclicGraph["right"] = directedAcyclicGraph["left"];// Cloning this would cause a stack overflow due to infinite recursion:
var cyclicGraph = {"left"  : { "left" : null, "right" : null, "data" : 3 },"data"  : 8
};
cyclicGraph["right"] = cyclicGraph;

它将无法处理任何JavaScript对象,但只要您不认为它会对您扔给它的任何东西起作用,它就可以满足许多目的。


#29楼

答:Levy的答案几乎是完整的,这是我的一点贡献: 有一种方法可以处理递归引用 ,请参见此行

if(this[attr]==this) copy[attr] = copy;

如果对象是XML DOM元素,则必须改用cloneNode

if(this.cloneNode) return this.cloneNode(true);

受A.Levy详尽研究和Calvin原型制作方法的启发,我提供了以下解决方案:

Object.prototype.clone = function() {if(this.cloneNode) return this.cloneNode(true);var copy = this instanceof Array ? [] : {};for(var attr in this) {if(typeof this[attr] == "function" || this[attr]==null || !this[attr].clone)copy[attr] = this[attr];else if(this[attr]==this) copy[attr] = copy;else copy[attr] = this[attr].clone();}return copy;
}Date.prototype.clone = function() {var copy = new Date();copy.setTime(this.getTime());return copy;
}Number.prototype.clone = 
Boolean.prototype.clone =
String.prototype.clone = function() {return this;
}

另请参阅答案中的Andy Burke的注释。


#30楼

有很多答案,但是没有一个提到ECMAScript 5中的Object.create ,它当然没有提供确切的副本,但是将源设置为新对象的原型。

因此,这不是对该问题的确切答案,而是单线解决方案,因此很优雅。 它最适合2种情况:

  1. 此类继承有用的地方(du!)
  2. 不会修改源对象的地方,因此这两个对象之间的关系就不成问题了。

例:

var foo = { a : 1 };
var bar = Object.create(foo);
foo.a; // 1
bar.a; // 1
foo.a = 2;
bar.a; // 2 - prototype changed
bar.a = 3;
foo.a; // Still 2, since setting bar.a makes it an "own" property

为什么我认为此解决方案更好? 它是本机的,因此没有循环,没有递归。 但是,较旧的浏览器将需要使用polyfill。


#31楼

上面的答案很接近JanTuroň,由于兼容性问题,它可能是在浏览器中最好的选择,但它可能会引起一些奇怪的枚举问题。 例如,执行:

for ( var i in someArray ) { ... }

在遍历数组元素后,将clone()方法分配给i。 这是一种避免枚举的改编,可用于node.js:

Object.defineProperty( Object.prototype, "clone", {value: function() {if ( this.cloneNode ){return this.cloneNode( true );}var copy = this instanceof Array ? [] : {};for( var attr in this ){if ( typeof this[ attr ] == "function" || this[ attr ] == null || !this[ attr ].clone ){copy[ attr ] = this[ attr ];}else if ( this[ attr ] == this ){copy[ attr ] = copy;}else{copy[ attr ] = this[ attr ].clone();}}return copy;}
});Object.defineProperty( Date.prototype, "clone", {value: function() {var copy = new Date();copy.setTime( this.getTime() );return copy;}
});Object.defineProperty( Number.prototype, "clone", { value: function() { return this; } } );
Object.defineProperty( Boolean.prototype, "clone", { value: function() { return this; } } );
Object.defineProperty( String.prototype, "clone", { value: function() { return this; } } );

这样可以避免将clone()方法设为可枚举,因为defineProperty()默认默认为可枚举为false。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 深入理解Javascript中的隐式调用

    本篇文章给大家详细介绍了javascript中的隐式调用相关知识点&#xff0c;写的十分的全面细致&#xff0c;具有一定的参考价值&#xff0c;对此有需要的朋友可以参考学习下。如有不足之处&#xff0c;欢迎批评指正。 不知道用隐式调用来形容是否确切,其行为总是隐藏在背后&#…...

    2024/4/21 16:27:37
  2. 8月

    1.报错 slice 清除cookie2.table 的pagechange事件&#xff0c;就是当点击页码的时候执行这个事件3.角色列表初始化的时候不需要执行查询角色列表&#xff0c;在ngOnchanges里面执行就可以了&#xff0c;当有输入属性的时候先执行onchanges的钩子&#xff0c;然后在执行ogonin…...

    2024/4/23 20:41:22
  3. 双眼皮双两层怎么改善

    ...

    2024/4/21 16:27:36
  4. 双眼皮术前术后对比照

    ...

    2024/4/21 16:27:33
  5. 双眼皮术前签字

    ...

    2024/4/21 16:27:32
  6. 在jsfiddle作在线angular测试,蛮有意思的

    jsfiddle.net 快速学知识&#xff0c;比本地自己弄快&#xff0c;当然&#xff0c;不能用于太复杂的应用啦。。 比如&#xff1a;学到directive的scope继承隔离作用域时&#xff0c;就可以这样弄。 scope 可选参数&#xff0c;&#xff08;布尔值或者对象&#xff09;默认值为f…...

    2024/4/20 14:24:12
  7. 双眼皮术前没有休息好

    ...

    2024/4/20 14:24:11
  8. 双眼皮术前哭

    ...

    2024/4/20 14:24:10
  9. Vue到底是怎样个框架?

    一、Vue介绍 过去的十年&#xff0c;我们的网页变得更加动态化和强大&#xff0c;是因为有JAVAScript&#xff0c;我们已经把很多传统服务端代码放到浏览器中这样就产生了成千上万行的JavaScript代码&#xff0c;他们链接了各种各样的HTML和CSS文件&#xff0c;但缺乏正规的组织…...

    2024/4/20 14:24:09
  10. 双眼皮术前可以吃东西

    ...

    2024/4/21 16:27:32
  11. 双眼皮术后一年恢复图

    ...

    2024/5/8 12:13:55
  12. 双眼皮术后眼睛向上看

    ...

    2024/4/21 16:27:29
  13. angular表单经验分享

    原文 https://www.jianshu.com/p/af359bd04f32 大纲 1、表单的名字不可以和传入的值的名字相同  2、在模板驱动表单的时候要使用angular表单的验证功能&#xff0c;需要将ngModel绑定到模板变量&#xff0c;通过模板变量来判断调用验证器  3、模板驱动表单如何绑定radio单选…...

    2024/4/21 16:27:28
  14. 双眼皮术后眼睛弄破了

    ...

    2024/4/21 16:27:27
  15. 双眼皮术后能外出

    ...

    2024/4/21 16:27:26
  16. 双眼皮术后两个月疤痒

    ...

    2024/4/21 16:27:25
  17. 双眼皮术后可以吃芒果

    ...

    2024/4/28 13:11:29
  18. 双眼皮术后禁食牛羊肉

    ...

    2024/4/21 16:27:24
  19. VARIANT、COleVariant 和_variant_

     在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制、由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看OAIDL.H文件中VARIANT定义的一个简化版: struct tagVARIANT {  VARTYPE vt;  union {  …...

    2024/4/21 16:27:22
  20. 双眼皮术后禁食

    ...

    2024/4/21 16:27:21

最新文章

  1. Windows Server 2019虚拟机安装

    目录 第一步、准备工作 第二步、部署虚拟机 第三步、 Windows Server 2019系统启动配置 第一步、准备工作 下载Windows Server 2019系统镜像 官网下载地址&#xff1a;Windows Server 2019 | Microsoft Evaluation Center VMware Workstation 17下载地址&#xff1a; 链…...

    2024/5/8 17:41:34
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. SpringBoot入门(Hello World 项目)

    SpringBoot关键结构 1.2.1 Core Container The Core Container consists of the Core, Beans, Context, and Expression Language modules. The Core and Beans modules provide the fundamental parts of the framework, including the IoC and Dependency Injection featur…...

    2024/5/6 17:52:14
  4. 游戏引擎架构01__引擎架构图

    根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​...

    2024/5/6 18:32:42
  5. Go语言map、slice、channel底层实现(go面试)

    slice 切片是一个引用类型&#xff0c;其底层实现是一个结构体&#xff0c;包含以下字段&#xff1a; ptr&#xff1a;一个指向底层数组的指针&#xff0c;指针指向数组的第一个元素。 len&#xff1a;切片当前包含的元素数量。 cap&#xff1a;切片的容量&#xff0c;即底层…...

    2024/5/5 1:45:06
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57