JavaScript での Reflect の詳細な紹介 (例付き)

不言
リリース: 2018-12-10 17:58:44
転載
4487 人が閲覧しました

この記事では、JavaScript の Reflect について詳しく説明します (例を示します)。必要な方は参考にしてください。

Reflect は、JavaScript 操作をインターセプトするメソッドを提供する組み込みオブジェクトです。方法はプロキシハンドラと同様です。 Reflect は関数オブジェクトではないため、構築できません。

    new Reflect() //错误的写法
ログイン後にコピー

Reflect は
Reflect を使用します。静的メソッドは、オブジェクト自体を通じてのみアクセスできるメソッドを参照します。 construct ()
3、Reflect.defineProperty()
4、Reflect.deleteProperty()
5、Reflect.enumerate()
6、Reflect.get()
7、リフレクト。 getOwnPropertyDescriptor ()
8、Reflect.getPrototypeOf()
9、Reflect.has()
10、Reflect.isExtensible()
11、Reflect.ownKeys()
12、リフレクト。 PreventExtensions ()
13, Reflect.set()
14, Reflect.setPrototypeOf()

静的メソッドの使用:

demo1: Reflect.get() を使用して指定されたキーを取得しますターゲットオブジェクトの値。

let obj = {
    a: 1
};

let s1 = Reflect.get(obj, "a")
console.log(s1) // 1
ログイン後にコピー

demo1 の get() メソッドは、obj オブジェクトをインターセプトし、キー a で値を読み取ります。もちろん、Reflect を行わずに a の値を読み取ることもできます。

demo2: Reflect.apply を使用して、指定されたパラメーターをターゲット関数フロアに渡します。

const s2 = Reflect.apply(Math.floor, undefined, [1.75]); 
console.log(s2) // 1
/ /Reflect.apply()提供了3个参数,
// 第一个参数是反射的函数,后面2个参数才是和数组的apply一致。
ログイン後にコピー

demo2 の例は、Math.floor メソッドをインターセプトし、パラメーターを渡して戻り値を s2 に代入することで、戻り値を読み取る必要があるときに s2 を呼び出すことができるようにすることができます。

demo3: Reflect.ownKeys を使用してオブジェクトのキーを取得します

    console.log(Reflect.ownKeys({"a":0,"b":1,"c":2,"d":3})); //输出 :["a", "b", "c", "d"]
    console.log(Reflect.ownKeys([])); // ["length"]      
    var sym = Symbol.for("comet");      
    var sym2 = Symbol.for("meteor");      
    var obj = {
        [sym]: 0, "str": 0, "773": 0, "0": 0,      
        [sym2]: 0, "-1": 0, "8": 0, "second str": 0
    };      
    Reflect.ownKeys(obj);
     //输出:/ [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
ログイン後にコピー

Reflect.ownKeys の並べ替えは、最初に数値を表示し、サイズに従って数値を並べ替えてから、挿入順序に従って文字列を並べ替えます


以上がJavaScript での Reflect の詳細な紹介 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート