3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果你能超越 ES2015 并且不要害怕使用實(shí)驗(yàn)性的東西,你可以玩裝飾器。通天塔
class Foo {
@flag
bar() {
console.log('bar invoked');
};
};
function flag(target) {
target.descriptor.value.flag = true;
return target;
}
const foo = new Foo()
console.log(foo.bar.flag)

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
在 JavaScript 中,沒(méi)有聲明性的方法來(lái)為方法創(chuàng)建屬性(這是很少見(jiàn)的事情),所以如果你想這樣做,你必須像第二個(gè)例子那樣在事后做。(或者你的第三個(gè),但每次都重復(fù)bar
調(diào)用,所以它有點(diǎn)誤導(dǎo)和/或可能沒(méi)那么有用。)

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
無(wú)法引用使用嚴(yán)格模式調(diào)用的函數(shù)(請(qǐng)記住,使用類(lèi)會(huì)使嚴(yán)格模式自動(dòng)生效)。
如果您想這樣做,請(qǐng)使用 ES5“類(lèi)”:
function Foo() {};
Foo.prototype.bar = function() {
console.log('bar invoked');
arguments.callee.flag = true;
};
請(qǐng)記住,它arguments.callee在嚴(yán)格模式下被禁用。
添加回答
舉報(bào)