هل هناك طريقة في جافا سكريبت للحصول على تعريف وظيفة معينة كسلسلة، إلى أن من المحتمل المعدلة وevaled؟
-
07-07-2019 - |
سؤال
واني اسعى لتقييم وظيفة في سياق جديد، أي واحد التي تحتوي على كلمة معينة محددة لا وجود له في نطاق. فمن السهل بما فيه الكفاية إذا كان لدي تعريف الدالة كسلسلة، ولكن أود أن توفر القدرة على القيام بذلك مع قائمة العادية من الوظائف، مثل ذلك:
var funcs = {
first: function() { return 'yayaya'; },
second: function() { return 'okokok' + keyword; },
...
};
وبعد ذلك في وقت لاحق:
function Thing () {};
for (func in funcs) {
var definition = funcs[func].definition();
var keyword = "NOW I AM THE KEYWORD";
var actual_func_with_keyword_defined = eval(definition);
Thing.prototype[func] = actual_func_with_keyword_defined;
}
وماذا أنا في عداد المفقودين هي وظيفة تعريف () أو ما يعادلها، والتي ترجع مصدر من وظيفة. هل هذا ممكن في جافا سكريبت؟
المحلول
وهذا سوف يعمل، على الرغم من أنني متأكد من أن هناك حلا أكثر أناقة أطول:
function foo() {
}
var bar = '' + foo; //type cast to a string by adding an empty string
alert(bar);
نصائح أخرى
وحاول ببساطة اخراج .definition()
.
والطريقة القياسية JS لاستدعاء toString()
على وظيفة. مثل ذلك:
function myFun() {}
myFun.toString() // gives "function myFun() {}",
// potentially with white space differences
لا تنتمي إلى StackOverflow