3 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
如果你能超越 ES2015 并且不要害怕使用實驗性的東西,你可以玩裝飾器。通天塔
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貢獻1856條經(jīng)驗 獲得超5個贊
在 JavaScript 中,沒有聲明性的方法來為方法創(chuàng)建屬性(這是很少見的事情),所以如果你想這樣做,你必須像第二個例子那樣在事后做。(或者你的第三個,但每次都重復(fù)bar
調(diào)用,所以它有點誤導(dǎo)和/或可能沒那么有用。)

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