3

がある場合、 などでvar foo = 'bar';呼び出し可能なすべての関数を取得するにはどうすればよいですか? これはオブジェクトではないため、Object.getOwnPropertyNames(foo)は機能しません:footoUpperCase

$ node
> var foo = 'bar';
undefined
> console.log(Object.getOwnPropertyNames(foo));
TypeError: Object.getOwnPropertyNames called on non-object
    at Function.getOwnPropertyNames (native)
    at repl:1:20
    at REPLServer.eval (repl.js:80:21)
    at repl.js:190:20
    at REPLServer.eval (repl.js:87:5)
    at Interface.<anonymous> (repl.js:182:12)
    at Interface.emit (events.js:67:17)
    at Interface._onLine (readline.js:162:10)
    at Interface._line (readline.js:426:8)
    at Interface._ttyWrite (readline.js:603:14)

katspaugh のシンプルでエレガントなソリューション:

> console.log(Object.getOwnPropertyNames(foo.constructor.prototype));
[ 'constructor',
  'length',
  'toLowerCase',
  ... ]
undefined
4

3 に答える 3

3

必要なメソッドはString.prototype、すべての文字列のプロトタイプである Valindor の定規にあります。

Object.getOwnPropertyNames('baz'.constructor.prototype)
于 2012-04-25T09:01:10.913 に答える
1

以下を使用できます。

$(document).ready(function () {
    var foo = 'bar';
    var div = '';
    var ob = Object.getOwnPropertyNames(foo.constructor.prototype);
    for (var i = 0; i < ob.length; i++) {
        div += ob[i] + "<br/>";
    }
    $(selector).html(div);
});
于 2012-04-25T08:58:23.483 に答える
-2

日食を使用してください:)

または、こちらをご覧ください: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String

于 2012-04-25T08:43:45.807 に答える