ちなみに記事は面白かったですー。
最近 js 使ってなくてですね。getter / setter を書き変えられることを知らなかったんですよね。勉強になりました!
ただですね。最後の方に
ゲッター関数の変更理由として、戻り値の計算方法を変えたいということがあります。
そこで、val * 2 などを返したかったのですが、これは不可能でした。
そこで、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 <- 問題なし
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
console.log(uhaha.bugaisha()); // 50
まあ、val を直接参照しようと思ったら eval で書き変えりゃ多分行けるんじゃなかろーかw js って面白いよね。最近はかたっ苦しい勢力が圧倒的な最大勢力ですけどね。ゆる〜いなんでもありが好きな自分としてはつまんない。仕事では「ゆるいことを」毛嫌いする人が増殖しちゃったんで自分もかたっ苦しくやってましたが、そんな安定ルーチンな仕事はすぐに飽きたんで仕事じゃ js もやってない。工場の流れ作業か!っつうの。
でも今日は
Object.defineProperty
Object.getOwnPropertyDescriptor
なんて面白いものを知れて良かった!感謝!
てか、自分のブログをざっと見返すと本筋から離れてアホなことばっかやってるwww
てか2、こういうアホなんは seesaa でしか言えねぇぇぇぇwww
この記事へのコメント