2022年04月01日

『ゲッター/セッター関数を後から変更する方法』を読んで不可能じゃない部分

ゲッター/セッター関数を後から変更する方法』を読んで「スコープを外れても参照すること自体」は不可能じゃないよなぁと思ったので、とんでもなく久しぶりに記事アップ。

ちなみに記事は面白かったですー。
最近 js 使ってなくてですね。getter / setter を書き変えられることを知らなかったんですよね。勉強になりました!

ただですね。最後の方に
ゲッター関数の変更理由として、戻り値の計算方法を変えたいということがあります。
そこで、val * 2 などを返したかったのですが、これは不可能でした。

ってありますが、不可能でもないかなーっと。
eval なんて危険なものを使う必要もなく、例えばこんな程度で出来てしまう。

ds.get_old = ds.get;
ds.get = () => ds.get_old() * 2;
Object.defineProperty(obj, "val1", ds);

obj.val1 = 20;
console.log( obj.val1 ); // 40 <- できた

obj.val1 = 50;
console.log( obj.val1 ); // 100 <- 問題なし

もともとの val は scope が違うので直接参照することは出来ないんですけどね。参照できるもともとの get を残しておけば余裕です。

const uhaha = {bugaisha:ds.get_old};
console.log(uhaha.bugaisha()); // 50

まあ、val を直接参照しようと思ったら eval で書き変えりゃ多分行けるんじゃなかろーかw js って面白いよね。最近はかたっ苦しい勢力が圧倒的な最大勢力ですけどね。ゆる〜いなんでもありが好きな自分としてはつまんない。仕事では「ゆるいことを」毛嫌いする人が増殖しちゃったんで自分もかたっ苦しくやってましたが、そんな安定ルーチンな仕事はすぐに飽きたんで仕事じゃ js もやってない。工場の流れ作業か!っつうの。

でも今日は
Object.defineProperty
Object.getOwnPropertyDescriptor
なんて面白いものを知れて良かった!感謝!

てか、自分のブログをざっと見返すと本筋から離れてアホなことばっかやってるwww
てか2、こういうアホなんは seesaa でしか言えねぇぇぇぇwww





posted by HiFa at 20:27 | 愛知 ☁ | Comment(0) | JavaScript雑感 | このブログの読者になる | 更新情報をチェックする
>>> スパムコメントは消してますよん。 お互い無駄な労力は避けましょう。 <<<

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。