これは「学術的興味」から外れています(ただし、私はどこかで使用することを考えています)。方法自体を削除する - それは動作しますが、なぜそれを使用しますか?
function f2()
{
delete Widget.f1;
Widget.f3 = function()
{
console.log("This works.");
}
}
let Widget =
{
f1: function()
{
f2();
}
}
console.log(Widget);
Widget.f1();
console.log(Widget);
Widget.f3();
したがって、私は基本的にオブジェクトから自分自身を削除し、別のメソッドに置き換えるメソッドを呼び出します。それはうまくいくようです。ここに私の2つの質問があります:
私はこれをしてはいけない理由はありますか?
「JavaScriptの内部にある」という観点からは、どのように機能しますか?直感は、f1が完了するまで「開かれた」ままであると言います。これは、まだ「開かれている」機能を削除することを意味します。 f2()コールは何とか "持ち上げ"られていますか?
乾杯
実行中の関数を削除しているわけではありません( 'Widget.f1')。実行される関数は 'f2'です。したがって、 'f2'は' Widget.f1'をうまく削除できます。 –
これは、関数ではなく、オブジェクトプロパティ 'f1'を削除しています。 – MinusFour