見出し画像

【projectItemRenamer.jsx】環境読込 11【開発記】

環境読込の続き🤤

環境確認
草案作成
UI構築
環境保存
環境読込 ←今ココ
準備処理
選択判定
候補処理
選択処理
改名処理
----備忘録
ファイルエラー後の動作停止調査
保存設定の有効化
パス文字非対応化

→ CS の Javascript 実行環境で Number もどき(及び継承クラス)を作るのは不可能


現在 web 上では ES2015 だとか ES6 と呼ばれるスクリプト仕様以降の記事が標準化しており、いわゆる prototype 方式を含む古代の記事を探すのが困難になってる😞
技術的なメモとして書き残しておく必要があると思うので1回分を費やして調べた事を残しとく🤤


Number もどきオブジェクト

希望の挙動はオブジェクトを参照すると数値として振る舞う Number オブジェクトのような存在なのよね🤤
つまり setter 通すと statusCode としての数値が格納されて種々の関数でメッセージ化等を行うやつ。

こんな想定

a = new STATUSCODE(0);
$.writeln(a==0?"none":a.toString()); // none
b = a.toMessage(); // 数値によってメッセージ文字列を返す


ラッパーオブジェクト

最初は "javascript number 自作" みたいな探し方をしてみたんだけどこれがまぁ出てこない🤪
なんで Number なのかって?これは以前、いわゆるクラスの定義の仕方を調べていた時に「ビルトインオブジェクトと似た挙動のものを自作してみよう」という所感の記事を見た記憶があったから🤤
でも薄っすらと記憶にあるだけで事あるごとに探すも記事を見つけられず途方に暮れるばかり😞
こういう、プリミティブを拡張したようなオブジェクトはプリミティブで toString() などを使えるようにするために内部的に一度オブジェクトインスタンスに変換し、コトが終わるとインスタンスは破棄されるという挙動で成り立っているのだとか🤔
この、変換しているオブジェクトを #ラッパーオブジェクト と呼んでいるらしいね☺️
目的はラッパーオブジェクトを作れればいい…ハズなんだけど…
ラッパーオブジェクトを自作する方法は記事が全く無い。ほんとに無い。全然無い。欠片も無い😞😞😞


Numberの継承クラス

自作がダメなら継承すれば良いじゃない☺️
#Numberオブジェクトを継承 しようず🤤

JavaScriptでNumberを継承したサブクラスをつくろう
https://kimizuka.hatenablog.com/entry/2015/09/12/000000

ここもいつ消えるか分からないのでコードを失敬🤪

function Num() {
    Number.call(this, arguments);
}

Num.prototype = new Number();
Num.prototype.constructor = Num;

var num = new Num(10);
console.log(num.toString());
Uncaught TypeError: Number.prototype.toString is not generic
怒られました。

デスヨネー
🙄🙄🙄

記憶が定かであるなら prototype を継承しているところの new はこの書き方では挙動がおかしいので良くないというのを過去に見たんだけどはて?🤔

ES2015による継承の方法
https://www.mitsue.co.jp/knowledge/blog/apps/201511/25_1638.html

そうそうこれこれ。
prototype を取って別途 new して割り当てるやつ。
要の部分を失敬🤪

function object(o) {
    function F() {}
    F.prototype = o;
    return new F();
}
...
Dog.prototype = object( Animal.prototype );
...

…はて?なんで直接 Dog.prototype=Animal.prototype じゃいけないんだっけ?🙄
直接 new だと constructor が駆動して良くない?なんかそんな辺りだったような。
まぁなんにしても古い環境では継承がとてもめんどくさい、というのは間違いない。

画像1

画像2

デスヨネー
🙄🙄🙄

ここまでやって
そういえば古い環境だと Number とか Array を継承したサブオブジェクトクラスを作るのは無理って記事を見たことがあるのを思い出した🤪


次回は

差し替え作業開始かな🤤

この記事が気に入ったらサポートをしてみませんか?