ホームページ ウェブフロントエンド フロントエンドQ&A es6 オブジェクトに追加された新しい属性は何ですか?

es6 オブジェクトに追加された新しい属性は何ですか?

Nov 21, 2022 pm 03:54 PM
javascript es6

es6 オブジェクトに追加された新しい属性は「name」です。 name 属性は、オブジェクトのメソッド (関数) の名前を取得できます (例: "getName() {console.log(this.name);}"。この関数は、name を直接呼び出すと関数名を返します。リテラルオブジェクトのメソッドも function なので、 name 属性もあります。オブジェクトのメソッドがシンボル値の場合、name 属性は括弧内のシンボルの説明内容を返します。

es6 オブジェクトに追加された新しい属性は何ですか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

オブジェクトは JavaScript において非常に重要なデータ構造です。ES6 ではオブジェクトが大幅に拡張され、より使いやすくなっています。 es6 オブジェクトに追加された新しい属性は「name」です。

オブジェクト メソッドの name 属性

オブジェクトのメソッドの名前を取得する方法について考えたことはありますか? ES6では関数にname属性が追加されており、関数がnameを直接呼び出すと関数名が返されます。リテラル オブジェクトのメソッドも関数であるため、name 属性も持ちます。次の例:

var person = {
  name: "Jack",
  getName() {
    console.log(this.name);
  },
};

person.getName.name // "getName"
ログイン後にコピー

上記のコードでは、getName() メソッドの name 属性は関数名 (つまりメソッド名)

# を返します。 ##2 つのタイプがあります 特殊なケース:

  • Function コンストラクターによって作成された関数、name 属性は「匿名」を返します;

    ## によって作成された関数
  • #bind メソッドでは、name 属性は「bound」と元の関数の名前を返します。
  • (new Function()).name // "anonymous"
    
    var doSomething = function() {
      // todo
    };
    doSomething.bind().name // "bound doSomething"
    ログイン後にコピー
  • オブジェクト メソッドがシンボル値の場合、
name

属性は括弧内のシンボルの説明内容を返します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const key1 = Symbol(&amp;#39;description content&amp;#39;); const key2 = Symbol(); let obj = { [key1]() {}, [key2]() {}, }; obj[key1].name // &quot;[description content]&quot; obj[key2].name // &quot;&quot;</pre><div class="contentsignin">ログイン後にコピー</div></div>

拡張知識: es6 オブジェクトの属性の改善

1. 簡潔な属性表現

ES6 では、変数や関数をオブジェクトのプロパティやメソッドとして直接記述することができます

1.1 プロパティ値の省略形

ES5 では、オブジェクトを定義するときのプロパティの値は次のとおりであることがわかっています。 ES6では、属性名と定義した変数名が同じであれば、オブジェクト内の項目として変数名をオブジェクト内に直接記述することができます。以下のように: 上記のコードの

var name = &#39;imooc&#39;;

// ES5
var obj1 = {
  name: name,
}
// ES6
var obj2 = {
  name,
}
ログイン後にコピー

obj1 と obj2 は同じ意味を持ちます。変数名は中括弧内に直接記述することができます。このとき、属性名が変数名、属性値が変数の値となります。

関数でオブジェクトを返す例を見てみましょう:

// ES5
function getObj(x, y) {
  return {x: x, y: y};
}
// 等同于 ES6
function getObj(x, y) {
  return {x, y};
}

getObj(1, 2) // {x: 1, y: 2}
ログイン後にコピー

上記のコードから、日常の開発において、データを組み立てることが非常に便利で役立つことがわかります。 。

1.2 オブジェクト内のメソッドの省略形

省略可能なプロパティに加えて、オブジェクト内のメソッドも省略でき、より簡潔で明確になります。次の例を見てみましょう:

const name = &#39;张三&#39;
// ES5
var person = {
  name: name,
  getName: function() {
    console.log(&#39;imooc&#39;)
  }
};

// ES6
var person = {
  name,
  getName() {
    console.log(this.name)
  }
};
console.log(person)	// {name: "imooc", getName: ƒ}
ログイン後にコピー

上記のコードでは、ES5 でオブジェクトのメソッドを定義する場合、function キーワードを使用してメソッドを定義する必要がありますが、ES6 ではコロンと function キーワードが直接省略されます。 ES6 の簡潔なアプローチを使用すると、より表現力が豊かになることがわかります。

この方法は、Node.js でモジュールをエクスポートする場合に便利です。次の例を見てみましょう:

var person = {};

function getName () {
  return person.name
}

function setName () {
  person.name = &#39;李四&#39;
}

function clear () {
  person = {};
}

// ES5 写法
module.exports = {
  getName: getName
  setName: setName,
  clear: clear
};
// ES6写法
module.exports = { getName, setName, clear };
ログイン後にコピー

上記のコードでは、人物オブジェクトを定義し、その人物オブジェクトを操作するためのいくつかのメソッドを公開しています。エクスポートするときに、ES6 で次の記述を繰り返す必要がないことがわかります。変数名をより簡潔な方法で変更し、モジュールによって提供されるメソッドをより簡潔に表現します。

2. 簡潔な属性表現

JavaScript でオブジェクトのプロパティを定義するには、通常 2 つの方法があります。次のように:

// 方法一
obj.name = &#39;imooc&#39;;

// 方法二
obj[&#39;a&#39; + &#39;ge&#39;] = 7;
ログイン後にコピー

上記のコードでは、メソッド 1 は識別子を直接使用して代入操作を実行します。これはより一般的に使用される代入操作ですが、属性が式の場合は、メソッド 2 を使用して属性を変更できます。式 式は角括弧内に記述されます。

ただし、ES5 でリテラル オブジェクトを定義する場合、リテラル オブジェクトのプロパティとして式を使用することはできません。プロパティは、最初のメソッド (識別子) を通じてのみ定義できます。

var obj = {
  name: &#39;imooc&#39;,
  age: 7
}
ログイン後にコピー

ES6 は、より多くのシナリオをカバーするためにオブジェクトのプロパティを拡張しました。プロパティは、次のように変数の形式で定義できます:

var key = &#39;name&#39;;
var obj = {
  [key]: &#39;imooc&#39;,
  [&#39;a&#39; + &#39;ge&#39;]: 7
}
ログイン後にコピー

上記のコードでは、リテラル オブジェクトの属性を次のように定義できます。角括弧内に配置します。角括弧には変数または式を指定できます。これにより、間違いなく属性の機能が拡張され、プログラミングがより柔軟になります。

さらに、属性にはスペースを含む文字列を指定することもでき、値を取得する場合は、括弧内で文字列を直接使用することも、変数を使用することもできます。次のように:

var str = &#39;first name&#39;;
var obj = {
  [&#39;I love imooc&#39;]: &#39;ES6 Wiki&#39;,
  [str]: &#39;Jack&#39;
}
console.log(obj[&#39;I love imooc&#39;])	// ES6 Wiki
console.log(obj[str])	// Jack
console.log(obj[&#39;first name&#39;])	// Jack
ログイン後にコピー

式は、オブジェクトのメソッド名を定義するために使用することもできます。

var person = {
  name: &#39;Jack&#39;,
  [&#39;get&#39; + &#39;Name&#39;]() {
    console.log(this.name)
  }
};
console.log(person.getName())	// Jack
ログイン後にコピー

注 1: プロパティ名の表現とプロパティの簡潔な表現を同時に使用することはできず、エラーが報告されます。

// 报错
var name = &#39;Jack&#39;;
var age = 18;
var person = { [name] };
// Uncaught SyntaxError: Unexpected token &#39;}&#39;
ログイン後にコピー

上記のコードには構文エラーがあります

注 2: 属性名は文字列型である必要があります。属性式がオブジェクトの場合、最初に toString() が呼び出されます。使用前の紐です。

var key1 = {name: &#39;imooc&#39;};
var key2 = {age: 7};
var obj = {
  [key1]: &#39;value content 1&#39;,
  [key2]: &#39;value content 2&#39;,
}
console.log(obj)	// {[object Object]: "value content 2"}
ログイン後にコピー

上記のコードで定義されている 2 つの変数はオブジェクト型であり、toString() が呼び出されたときに同じ属性を持つ [object Object] になります。したがって、後の属性によって前の属性が上書きされます。

注意 3: 如果属性的表达式是数组时,则和对象不一样。数组在 toString() 后会变成一个字符串,所以对象属性的表达式就是一个字符串。

var keys = [&#39;imooc&#39;, &#39;7&#39;];
var obj = {
  [keys]: &#39;value content&#39;,
}
console.log(key.toString())	// "imooc,7"
console.log(obj)		// {imooc,7: "value content"}
console.log(obj[keys])	// "value content"
ログイン後にコピー

上面的代码中可以看出来,数组 keys 在 toString() 得到了 imooc,7 作为 obj 的属性。另外,我们也可以直接使用 keys 获取 obj 对象上的值。

【推荐学习:javascript视频教程

以上がes6 オブジェクトに追加された新しい属性は何ですか?の詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

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

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

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

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

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

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

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

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

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

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

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

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

See all articles