jsディープコピーの例についてのディスカッション
ディープ コピーは親オブジェクトを子オブジェクトにコピーすることであり、2 つのコピーのメモリとその後の操作は相互に影響しません。この記事では主に js のディープ コピーの例について説明します。これは、皆さんの役に立つことを願っています。
(1) 方法 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
使用法:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) 方法 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
使用方法:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) 方法 3
JSON.parse(JSON.stringify(obj)
注: obj の属性には関数を含めることはできません。
(1) 方法 1
function copy(obj1,obj2){ var obj2=obj2||{}; for(var name in obj1){ if(typeof obj1[name] === "object"){ //先判断一下obj[name]是不是一个对象 obj2[name]= (obj1[name].constructor===Array)?[]:{}; copy(obj1[name],obj2[name]); //然后来无限递归 }else{ obj2[name]=obj1[name]; //如果不是对象,直接赋值。 } } return obj2; }
使用法:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n_obj = copy(obj1,{}) console.log(n_obj)
(2) 方法 2
function d_clone(obj) { return Object.getPrototypeOf(Object.create(obj)); }
使用法:
var obj1 = { se:[{a:1,b:2},{c:3}], sa:{a:"g"}, sc:function(){console.log(1)} }var n2_obj = d_clone(obj1); console.log(n2_obj)
(3) 方法 3
JSON.parse(JSON.stringify(obj)
注: obj の属性には関数を含めることはできません。
関連する推奨事項:
関連する推奨事項:
JavaScript ディープ コピーのパフォーマンスについての深い理解
js のディープ コピーとシャロー コピーとは何か、およびそれらの実装方法
JavaScript のシャロー コピーとシャロー コピーの違いディープコピー
以上がjsディープコピーの例についてのディスカッションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

Django フレームワークは、Web アプリケーションを作成するためのシンプルかつ強力な方法を提供する Web アプリケーション用の Python フレームワークです。実際、Django は最も人気のある Python Web 開発フレームワークの 1 つとなり、Instagram や Pinterest を含む多くの企業にとって最初の選択肢となっています。この記事では、基本概念や重要なコンポーネント、具体的なコード例など、Django フレームワークとは何かについて詳しく説明します。 Django の基本概念Djan

Golang は、さまざまなアプリケーションやサービスの開発に使用できる強力で効率的なプログラミング言語です。 Golang では、ポインタは非常に重要な概念であり、データをより柔軟かつ効率的に操作するのに役立ちます。ポインタ変換とは、異なる型間のポインタ操作のプロセスを指します。この記事では、具体的な例を使用して、Golang におけるポインタ変換のベスト プラクティスを学びます。 1. 基本概念 Golang では、各変数にはアドレスがあり、アドレスはメモリ内の変数の位置です。

Oracle インスタンスの数とデータベースのパフォーマンスの関係 Oracle データベースは、業界でよく知られたリレーショナル データベース管理システムの 1 つであり、エンタープライズ レベルのデータ ストレージと管理で広く使用されています。 Oracle データベースでは、インスタンスは非常に重要な概念です。インスタンスとは、メモリー内のOracleデータベースの実行環境を指します。各インスタンスには独立したメモリー構造とバックグラウンド・プロセスがあり、ユーザー・リクエストの処理とデータベース操作の管理に使用されます。インスタンスの数は、Oracle データベースのパフォーマンスと安定性に重要な影響を与えます。

WebSocket と JavaScript を使用してオンライン電子署名システムを実装する方法の概要: デジタル時代の到来により、電子署名は従来の紙の署名に代わってさまざまな業界で広く使用されています。 WebSocketは全二重通信プロトコルとしてサーバーとリアルタイム双方向のデータ通信が可能で、JavaScriptと組み合わせることでオンライン電子署名システムを実現できます。この記事では、WebSocket と JavaScript を使用して簡単なオンライン アプリケーションを開発する方法を紹介します。

JavaScript と WebSocket を使用してリアルタイム オンライン投票システムを実装する方法 はじめに: インターネットの急速な発展に伴い、リアルタイム オンライン投票システムはさまざまな活動や選挙において非常に一般的な形式になりました。 JavaScript と WebSocket テクノロジーを使用してリアルタイムのオンライン投票システムを実装すると、柔軟性と使いやすさが向上します。この記事では、JavaScript と WebSocket を使用してシンプルなリアルタイム オンライン投票システムを実装し、対応するコードを提供する方法を詳しく紹介します。

最新のプログラミング言語として、Go 言語はそのシンプルさと効率性により、近年ますます多くの開発者に愛され、好まれています。ユニークな機能の 1 つは、シングルスレッドであることです。従来のマルチスレッドプログラミング言語では、スレッド間の同期や相互排他を開発者が手動で管理する必要がありましたが、Go言語では独自のコルーチン(Goroutine)と通信機構(チャネル)により、便利かつ効率的な並行プログラミングを実装できます。 1. Goroutine とシングルスレッド: Go 言語
