yu-rie
@yu-rie (す ライム)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

JavaScript でオブジェクトのメンバが属しているオブジェクトが知りたい

JavaScript で別名を定義する関数を作ろうと思っています。

document.getElementById();

というメソッドが長いので id() で使いたいと思い

const id = (id) => document.getElementById(id);

こういう処理を書いたのですが、もっと id() が別名であることを分かりやすくしたいと思いました。

そこで

const id = alias( document.getElementById );

このような alias() 関数を作りたいと思っています。

発生している問題・エラー

function alias(func) {
    return args => func(args);
}

このように書いてみたのですが、2行目の func(args) の部分で

Uncaught TypeError: Illegal invocation`

というエラーが出ました。

うまく行った例としては

function alias(func, obj){
  return func.bind(obj);
}

このように、一緒にオブジェクトを受け取って .bind() することで動いたのですが

const id = alias(document.getElementById, document);

こっちが冗長になって、読みにくいのです。

受け取った document.getElementById から、document 部分を指定する方法はありませんか?

キーワードだけでも教えていただけると助かります。

0

1Answer

特定の参照を持つオブジェクトを一覧で取得する万能な方法は存在しなかったと思います
個人的にはaliasをかました方より単純にidだけで取得している方が遥かに読む人に優しくて良いと思います


documentのケースからは少しずれますが、あるクラスメソッドを渡してそれをメンバに持つインスタンス100個を取得できたとして、どれに対して実行して結果を返したらいいかわからないでしょう?

1Like

Comments

  1. @yu-rie

    Questioner

    確かにその通りですね...
    自分にはできないという事がはっきりしたので、調べ続けなくて良くなりました😊
    他の勉強に時間が使えます!🕒
    ありがとうございました!

Your answer might help someone💌