目次
super キーワード
オブジェクトの拡張演算子
ホームページ ウェブフロントエンド jsチュートリアル ES6 オブジェクトの拡張機能と新しいメソッドの概要 (例付き)

ES6 オブジェクトの拡張機能と新しいメソッドの概要 (例付き)

Jan 11, 2019 am 11:02 AM
javascript

この記事は、ES6 オブジェクトの拡張と新しいメソッドの概要を示しています (例付き)。必要な方は参考にしていただければ幸いです。

1. 属性の簡潔な表現

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

const foo = 'bar';
const baz = {foo};
baz//{foo:'bar'}

//等同于
const baz = {foo:foo}
ログイン後にコピー

上記のコードは、ES6 では変数をオブジェクトに直接書き込むことができることを示しています。このとき、属性名は変数名、属性値は変数の値となります。別の例を示します。

function f(x,y){
    return {x,y}
}
//等同于
function f(x,y){
    return {x:x,y:y};
}
f(1,2)//{x:1,y:2}
ログイン後にコピー

属性の省略形に加えて、メソッドも省略形にすることができます。

const o ={
    method(){
        return 'Hello!'
    }
}
//等同于
const o = {
    method:function(){
        return 'Hellow';
    }
}
ログイン後にコピー

以下は実際的な例です。

let birth = '2000/01/01';
const Person ={
    name:'张三',
    //等同于birth:birth
    birth,
    //等同于hello :function()....
    hello(){
        console.log('我的名字是',this.name) 
    }
}
ログイン後にコピー

この書き方は関数の戻り値に非常に便利です。

function getPoint(){
    const x =1;
    const y = 10;
    return {x,y}
}
getPoint()//{x:1,y:10}
ログイン後にコピー

CommonJS モジュールは一連の変数を出力します。これは簡潔な記述に非常に適しています。

let ms = {};
function getItem(key){
    return key in ms ?ms[key]:null;
}
function setItem(key,value){
    ms[key] = value;
}
function clear(){
    ms={}
} 
module.exports = {getItem,setItem,clear};
//等同于
module.exports = {
    getItem:getItem,
    setItem:setItem,
    clearLclear
}
ログイン後にコピー

属性の割り当て (setter) と値の取得 (getter) は、実際にはこのように記述されます。

const cart = {
    _wheels:4,
    get wheels(){
        return this._wheels;
    },
    set wheels (value){
        if(value<this._wheels){
            throw new Error('数值太小了!');
        }
        this._whells = value;
    }
}
ログイン後にコピー

2. プロパティ名の式

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

//方法一
obj.foo = true;
//方法二
obj['a'+'bc'] = 123;
ログイン後にコピー

上記のコードの最初の方法は、識別子を属性名として直接使用することであり、2 つ目の方法は、式を属性名として使用することです。この場合、式を角かっこで囲みます。
ただし、リテラルを使用してオブジェクトを定義する場合 (中括弧を使用)、ES5 でプロパティを定義するのに使用できるのはメソッド 1 (識別子) のみです。

var obj ={
    foo:true,
    abc:123
}
ログイン後にコピー

ES6 でオブジェクトのリテラル定義が許可されている場合は、オブジェクトのプロパティ名としてメソッド 2 を使用します。つまり、式をかっこで囲みます。

let propKey = 'foo';
let obj ={
    [propKey]:true,
    ['a'+'bc']:123
}
ログイン後にコピー

ここに別の例があります:

let lastWord = 'last word';
const a = {
    'first word':'hello',
    [lastWord]:'world'
};
a['first word']//hello
a[lastWord]//world
a['last word']//world
ログイン後にコピー

式はメソッド名の定義にも使用できます。

let obj = {
    ['h'+'ello'](){
        return 'hi'
    }
}
obj.hello()//hi;
ログイン後にコピー

注:

属性名表达式与简洁表示法,不能同时使用,会报错。
属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object object],这一点要特别小心。
ログイン後にコピー
const keyA = {a:1};
const keyB = {b:2};
const myObject = {
    [keyA]:'valueA',
    [keyB]:'valueB'
};
myObject;// Object {[object Object]: "valueB"}
ログイン後にコピー

上記のコードでは、[keyA] と [keyB] は [object object] を取得するため、[keyB] は [keyA] を上書きし、myObject は 1 つだけです最後に[object object]属性。

メソッドの name 属性

関数の name 属性は関数名を返します。オブジェクト メソッドも関数であるため、name 属性もあります。

const person = {
  sayName() {
    console.log('hello!');
  },
};

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

属性の列挙可能な型と走査

オブジェクトの各属性には、属性の変更動作を制御するために使用される説明オブジェクトがあります。 Object.getOwnPropertyDescriptor(obj,'foo') メソッドは、プロパティの説明オブジェクトを取得できます。
列挙可能性と呼ばれるオブジェクトの列挙可能な属性を記述します。この属性が false の場合、一部の操作が現在の属性を無視することを意味します。
現在、列挙可能値が false の属性を無視する操作が 4 つあります。

for...in循环:只遍历对象自身的和继承的可枚举的属性。(不包含Symbol属性)
Object.keys():返回对象自身的所有可枚举的属性的键名,返回一个数组。(不包含Symbol)
JSON.stringify():只串行化对象自身的可枚举的属性。
object.assign():忽略enumrable为false的属性,只拷贝对象自身的可枚举的属性。
ログイン後にコピー

ES6 には、オブジェクトのプロパティを走査するためのメソッドが合計 5 つあります。
(1)for...in

for...in循环遍历对象自身的和继承的可枚举属性(不包含Symbol属性)。
ログイン後にコピー

(2)Object.keys(obj)

object.keys返回一个数组,包含对象自身的(不含继承的)所有可枚举属性(不包含Symbol属性)的键名。
ログイン後にコピー

(3)Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)的键名。
ログイン後にコピー

(4) Object.getOwnPropertySymbols(obj)

返回一个数组,包含对象自身的所有Symbol属性的键名。
ログイン後にコピー

(5) Reflect.ownKeys(obj)

Reflect.ownKeys返回一个数组,包含对象自身的所有键名,不管键名是Symbol或字符串,也不管是否可枚举。
ログイン後にコピー

super キーワード

このキーワードは常に For the関数が配置されている現在のオブジェクトに加えて、ES6 では別の同様のキーワード super が追加されており、これは現在のオブジェクトのプロトタイプ オブジェクトを指します。

const proto = {
    foo:'hello'
};
const obj = {
    foo:'world',
    find(){
        return super.foo;
    }
};
Object.setPrototypeOf(obj,proto);
obj.find();//hello
ログイン後にコピー

上記のコードでは、オブジェクト obj.find() メソッドで、プロトタイプ オブジェクト proto の foo 属性が super.foo を通じて参照されます。
注: super キーワードがプロトタイプ オブジェクトを表す場合、そのオブジェクトのメソッド内でのみ使用できます。他の場所で使用すると、エラーが報告されます。現在、JavaScript エンジンはオブジェクト メソッドの省略形のみで、オブジェクト メソッドが定義されていることを確認できます。
JavaScript エンジンの内部では、super.foo は Object.getPrototypeOf(this).foo または Object.getPrototypeOf(this).foo.call(this) と同等です。

オブジェクトの拡張演算子

分割代入
オブジェクトの分割代入は、オブジェクトから値を取得するために使用されます。これは、オブジェクトのすべての走査可能だがまだ読み取られていない部分と同等です。ターゲット オブジェクト自体に属性が割り当てられます。すべてのキーとその値が新しいオブジェクトにコピーされます。

let{x,y,...z} = {x:1,y:2,a:3,b;4};
x//1,
y//2,
z//{a:3,b:4}
ログイン後にコピー

上記のコードでは、変数 z は、分割代入が配置されているオブジェクトです。等号の右側にあるすべての未読キー (a および b) を取得し、それらの値とともにコピーします。

以上が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衣類リムーバー

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)

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