成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

es6基礎(chǔ)0x021:反射

booster / 2398人閱讀

摘要:概述反射說(shuō)起來(lái)和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。

0x000 概述

反射說(shuō)起來(lái)和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。

反射提供了一系列的靜態(tài)函數(shù),可以使用Reflect.function_name(...prams)調(diào)用,這一系列的方法和代理處理器對(duì)象方法一致

0x001 apply

語(yǔ)法

Reflect.apply(target, thisArgument, argumentsList)

參數(shù):

target:目標(biāo)

thisArgument:調(diào)用的上下文

argumentList:參數(shù)列表

栗子

function sayHelloTo(name, age){
    console.log(`hello ${name}, i am ${this.name}, ${age} years old now`)
}
let obj={
    name: "jack"
}
Reflect.apply(sayHelloTo, obj, ["jack", 23])
// hello jack, i am jack, 23 years old now

0x002 construct

語(yǔ)法

Reflect.construct(target, argumentsList[, newTarget])

target:目標(biāo)

argumentsList:參數(shù)列表

newTarget:新的目標(biāo)

栗子

function Person(name){
    console.log(`Person ${name}`)
}
let obj={age:23}
Reflect.construct(Person,["jack"])
// Person jack

0x003 getOwnPropertyDescriptor

語(yǔ)法

Reflect.getOwnPropertyDescriptor(target, propKey)

target:目標(biāo)

propKey:屬性值

栗子

let obj={name:"jack"}
Reflect.getOwnPropertyDescriptor(obj, "name")
// {value: "jack", writable: true, enumerable: true, configurable: true}

0x004 defineProperty

語(yǔ)法

Reflect.defineProperty(target, propertyKey, attributes)

target:目標(biāo)

propertyKey:屬性名

attributes:屬性描述

栗子

let obj={}
Reflect.defineProperty(obj,"name",{value:"jack"})
console.log(obj) // {name:"jack"}

0x005 deleteProperty

語(yǔ)法

Reflect.deleteProperty(target, propertyKey)

target:目標(biāo)

propertyKey:屬性名

栗子

let obj={name:"jack"}
Reflect.deleteProperty(obj, "name")
// true

0x006 ownKeys

語(yǔ)法

Reflect.ownKeys(target)

target:目標(biāo)

栗子

Reflect.ownKeys({name:"jack"})
// ["name"]

0x007 has

語(yǔ)法

Reflect.has(target, propertyKey)

target:目標(biāo)

propertyKey:屬性名

栗子

Reflect.has({name:"jack"},"name")
// true
Reflect.has({name:"jack"},"age")
// false

0x008 get

語(yǔ)法

Reflect.get(target, propertyKey[, receiver])

target:目標(biāo)

propertyKey:屬性名

receiver:接收者

栗子

let obj={name:"jack"}
Reflect.get(obj, "name")
// "jack"

0x009 preventExtensions

語(yǔ)法

Reflect.preventExtensions(target)

target:目標(biāo)

栗子

Reflect.ownKeys({name:"jack",age:"23"})
// (2)?["name", "age"]

0x009 isExtensible

語(yǔ)法

Reflect.isExtensible(target)

target:目標(biāo)

栗子

Reflect.isExtensible({})
// true
Reflect.isExtensible(Object.seal({}))
// false
Reflect.isExtensible(Object.freeze({}))
// false
let obj=Reflect.preventExtensions({})
Reflect.isExtensible(obj)
// false

0x011 preventExtensions

語(yǔ)法

Reflect.preventExtensions(target)

target:目標(biāo)

栗子

Reflect.ownKeys({name:"jack",age:"23"})
// (2)?["name", "age"]

0x012 setPrototypeOf

語(yǔ)法

Reflect.setPrototypeOf(target, prototype)

target:目標(biāo)

prototype:要設(shè)置的 prototype

栗子

Reflect.setPrototypeOf(obj, Array)
Reflect.getPrototypeOf(obj)
// ? Array() { [native code] }

0x013 getPrototypeOf

語(yǔ)法

Reflect.getPrototypeOf(target)

target:目標(biāo)

栗子

Reflect.getPrototypeOf([])
// [constructor: ?, concat: ?, copyWithin: ?, fill: ?, find: ?,?…]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108674.html

相關(guān)文章

  • 《深入理解ES6》筆記——代理(Proxy)和反射(Reflection)API(12)

    摘要:方法與代理處理程序的方法相同。使用給目標(biāo)函數(shù)傳入指定的參數(shù)。當(dāng)然,不用反射也可以讀取的值。的例子我們可以理解成是攔截了方法,然后傳入?yún)?shù),將返回值賦值給,這樣我們就能在需要讀取這個(gè)返回值的時(shí)候調(diào)用。這種代理模式和的代理有異曲同工之妙。 反射 Reflect 當(dāng)你見(jiàn)到一個(gè)新的API,不明白的時(shí)候,就在瀏覽器打印出來(lái)看看它的樣子。 showImg(https://segmentfault....

    ZHAO_ 評(píng)論0 收藏0
  • 《深入理解ES6》筆記——代理(Proxy)和反射(Reflection)API(12)

    摘要:方法與代理處理程序的方法相同。使用給目標(biāo)函數(shù)傳入指定的參數(shù)。當(dāng)然,不用反射也可以讀取的值。的例子我們可以理解成是攔截了方法,然后傳入?yún)?shù),將返回值賦值給,這樣我們就能在需要讀取這個(gè)返回值的時(shí)候調(diào)用。這種代理模式和的代理有異曲同工之妙。 反射 Reflect 當(dāng)你見(jiàn)到一個(gè)新的API,不明白的時(shí)候,就在瀏覽器打印出來(lái)看看它的樣子。 showImg(https://segmentfault....

    shiina 評(píng)論0 收藏0
  • ES6中的代理(Proxy)和反射(Reflection)

    摘要:代理和反射的定義調(diào)用可常見(jiàn)代替其它目標(biāo)對(duì)象的代理,它虛擬化了目標(biāo),所以二者看起來(lái)功能一致。代理可攔截引擎內(nèi)部目標(biāo)的底層對(duì)象操作,這些底層操作被攔截后會(huì)觸發(fā)響應(yīng)特定操作的陷阱函數(shù)。 代理和反射的定義 調(diào)用 new Proxy() 可常見(jiàn)代替其它目標(biāo) (target) 對(duì)象的代理,它虛擬化了目標(biāo),所以二者看起來(lái)功能一致。 代理可攔截JS引擎內(nèi)部目標(biāo)的底層對(duì)象操作,這些底層操作被攔截后會(huì)觸發(fā)...

    Markxu 評(píng)論0 收藏0
  • 深入理解ES6筆記(十一)代理(Proxy)和反射(Reflection)API(12)

    摘要:是陷阱函數(shù)對(duì)應(yīng)的反射方法,同時(shí)也是操作的默認(rèn)行為。對(duì)象外形指的是對(duì)象已有的屬性與方法的集合,由于該屬性驗(yàn)證只須在讀取屬性時(shí)被觸發(fā),因此只要使用陷阱函數(shù)。無(wú)論該屬性是對(duì)象自身的屬性還是其原型的屬性。 主要知識(shí)點(diǎn):代理和反射的定義、常用的陷阱函數(shù)、可被撤銷的代理、將代理對(duì)象作為原型使用、將代理作為類的原型showImg(https://segmentfault.com/img/bVbfWr...

    explorer_ddf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<