私がやりたいのは、JavaScript で関数の名前を抽出することです。しばらく前にこれを機能させましたが、次のようになります。
MyObj = function myobj(){};
extend = function(obj){
return /function (.+)\(/.exec(obj.constructor.toString())[1];
}
ここに面白いことがあります。このようにこのオブジェクトでプロトタイプを使用すると、すべて正常に動作します。
MyObj.prototype.a = function(){}
MyObj.prototype.b = function(){}
extend(MyObj);
//->'myobj'
ただし、関数を次のように定義すると、次のようになります。
MyObj.prototype = {
a : function(){},
b : function(){}
}
extend(MyObj);
//->'Object'
後者のメソッドのコンストラクターが、私の関数ではなく JavaScript のネイティブ コード (「オブジェクト」など) の一部である理由を知っている人はいますか?
どんな助けでも大歓迎です!