jsのdelete演算子とdelete演算子とは何ですか?と使用例の分析
各プロパティには、0 個以上の内部プロパティ (*ReadOnly、DontEnum、DontDelete、Internal**) があります。 これらはタグと考えることができます。プロパティには特別な内部プロパティがある場合とない場合があります。 今日の議論では、DontDelete に興味があります。
変数と関数が宣言されると、それらは Variable オブジェクトのプロパティになります。つまり、アクティベーション オブジェクト (関数コード内) またはグローバル オブジェクト (グローバル コード内) のいずれかになります。これらのプロパティには、内部プロパティ DontDelete が生成されます。 。 ただし、明示的/暗黙的に割り当てられたプロパティは DontDelete を生成しません。 これが本質的に、一部のプロパティは削除できるが、他のプロパティは削除できない理由です。
var GLOBAL_OBJECT = this;
/* 'foo' はグローバルオブジェクトのプロパティであり、変数宣言によって生成されるため、内部プロパティ DontDelete を持っています
そのため削除できません*/
var foo = 1; delete foo; // false typeof foo; // "number" /* 'bar
' はグローバル オブジェクトの属性であり、変数宣言を通じて生成されるため、DontDelete サブサブがあります
そのため削除することもできません*/
function bar() {}; delete bar; // false typeof bar; // "function"
/* 'baz' も属性ですグローバル オブジェクトの
ただし、これはプロパティの割り当てによって生成されるため、DontDelete はありません
だからこそ、削除できるのです。これがすべての理由です。プロパティの特別な内部プロパティが、プロパティが削除することができます。 注: 組み込みオブジェクトの一部のプロパティには DontDelete という内部プロパティがあるため、削除できません。また、特殊な引数変数 (ご存知のとおり、アクティブ化されたオブジェクトのプロパティ) には、関数インスタンスの長さ (戻りパラメータの長さ) プロパティもあります。 DontDelete:
GLOBAL_OBJECT.baz = "baz"; delete GLOBAL_OBJECT.baz; // true typeof GLOBAL_OBJECT.baz; // "undefined"
(function() { //不能删除'arguments',因为有DontDelete delete arguments; // false; typeof arguments; // "object" //也不能删除函数的length,因为有DontDelete function f() {}; delete f.length; // false; typeof f.length; // "number" }) ();
(function(foo,bar) { delete foo; // false foo; // 1 delete bar; // false bar; // "bah" }) (1,"bah");
注: 内部プロパティはプロパティの生成時に決定され、その後の割り当てプロセスでは既存のプロパティの内部プロパティは変更されません。 この違いを理解することが重要です。
var GLOBAL_OBJECT = this; /* 通过变量声明生成全局对象的属性,拥有DontDelete */ var foo = 1; /* 通过未声明的变量赋值生成全局对象的属性,没有DontDelete */ bar = 2; delete foo; // false delete bar; // true
概要:
グローバル コードまたは関数コード内の変数と関数宣言はすべて、DontDelete を使用して属性を生成します。
関数パラメータもアクティベーションオブジェクトのプロパティであり、DontDelete もあります。オブジェクト内の属性を削除します: オブジェクトを削除します。メンバー
は自分のメンバーのみを削除できます
、VAR で宣言されたグローバル変数のみが、Window [""] グローバル メンバーの使用を許可しません。
追記: Javascript の削除演算子
削除は、JavaScript 言語であまり使用されない操作の 1 つですが、削除またはクリア アクションを実行する必要がある場合、削除操作が必要になることがあります。この記事では、その使用方法と仕組みについて詳しく説明します。
ご想像のとおり、削除の目的は何かを削除することです。より具体的には、次の例のように、オブジェクトの属性を削除します。
/* 'foo'创建的同时生成DontDelete */ function foo() {}; /* 之后的赋值过程不改变已有属性的内部属性,DontDelete仍然存在 */ foo = 1; delete foo; // false; typeof foo; // "number" /* 但赋值一个不存在的属性时,创建了一个没有内部属性的属性,因此没有DontDelete */ this.bar = 1; delete bar; // true; typeof bar; // "undefined"
var Benjamin = { "name": "zuojj", "url" : "http://www.php.cn" }; delete Benjamin.name; //Outputs: Object { url: "http://www.php.cn" } console.log(Benjamin);
ただし、「グローバル変数」は実際にはグローバル オブジェクト (ブラウザのウィンドウ) オブジェクトのプロパティであるため、削除する可能性があります。
var benjamin = "http://www.php.cn"; delete benjamin; //Outputs: "http://www.php.cn" console.log(benjamin);
delete 演算子にも戻り値があります。属性の削除が成功した場合は true を返し、属性が書き込み可能でないために削除できない場合は false を返すか、if をスローします。厳密モードで。
// Because var isn't used, this is a property of window benjamin = "php"; delete window.benjamin; // ReferenceError: benjamin is not defined console.log(benjamin);
var benjamin = { "name": "zuojj", "url" : "http://www.php.cn" }; var nameDeleted = delete benjamin.name; // Outputs: true console.log(nameDeleted); "use strict"; var benjamin_ = "zuojj"; //Outputs: Uncaught SyntaxError: Delete of an unqualified identifier in strict mode. delete benjamin_;
// Outputs: Object { name: null, url: "http://www.php.cn" } console.log(benjamin);
同时,像in和for in 循环运算将不会报告null属性的存在,如果你使用个对象,可能使用这些方法来检查一个对象,你可能想确保你真正删除任何不需要的属性。
最后,你应该记住,删除并没有破坏属性的值,仅仅属性本身,看下面的例子:
var name = "zuojj", benjamin = {}; benjamin.name = name; delete benjamin.name; //Outputs: "zuojj" console.log(name);
这里,name和benjamin.name映射到相同的值,真如你所看到的,删除benjamin.name并不会影响name.
以上がjsのdelete演算子とdelete演算子とは何ですか?と使用例の分析の詳細内容です。詳細については、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)

ホットトピック









ccsvchst.exe は、Symantec Endpoint Protection (SEP) ソフトウェアの一部である共通プロセス ファイルです。SEP は、有名なネットワーク セキュリティ会社 Symantec によって開発されたエンドポイント保護ソリューションです。ソフトウェアの一部として、ccsvchst.exe は SEP 関連のプロセスの管理と監視を担当します。まず、SymantecEndpointProtection(

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

デュアルコアブラウザは、2つの異なるブラウザコアを統合したブラウザソフトウェアです。カーネルはブラウザの中核部分であり、Web コンテンツのレンダリング、Web スクリプトやその他の機能の実行を担当します。従来のブラウザは通常、Trident カーネルを使用する IE ブラウザ、WebKit/Blink カーネルを使用する Chrome ブラウザ、Gecko カーネルを使用する Firefox ブラウザなど、単一のカーネルのみを使用します。デュアルコア ブラウザは 2 つの異なるコアを 1 つのブラウザに統合しており、ユーザーは必要に応じてそれらを自由に切り替えることができます。デュアルコアブラウザの登場

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

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