ホームページ ウェブフロントエンド jsチュートリアル jsディープコピーの例についてのディスカッション

jsディープコピーの例についてのディスカッション

Mar 06, 2018 pm 02:15 PM
javascript 話し合う

ディープ コピーは親オブジェクトを子オブジェクトにコピーすることであり、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

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

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

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

詳細: Django フレームワークとは何ですか? 詳細: Django フレームワークとは何ですか? Jan 19, 2024 am 09:23 AM

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

Golang でのポインター変換のベスト プラクティスの例を学ぶ Golang でのポインター変換のベスト プラクティスの例を学ぶ Feb 24, 2024 pm 03:51 PM

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

Oracle インスタンスの数とデータベースのパフォーマンスの関係 Oracle インスタンスの数とデータベースのパフォーマンスの関係 Mar 08, 2024 am 09:27 AM

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

WebSocketとJavaScriptを使ったオンライン電子署名システムの実装方法 WebSocketとJavaScriptを使ったオンライン電子署名システムの実装方法 Dec 18, 2023 pm 03:09 PM

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

JavaScriptとWebSocketを使用してリアルタイムオンライン投票システムを実装する方法 JavaScriptとWebSocketを使用してリアルタイムオンライン投票システムを実装する方法 Dec 18, 2023 pm 04:27 PM

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

詳細: Go 言語のシングルスレッド機能 詳細: Go 言語のシングルスレッド機能 Mar 15, 2024 pm 02:09 PM

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

See all articles