Function কনস্ট্রাক্টর
Function() কনস্ট্রাক্টর জাভাস্ক্রিপ্টে একটি নতুন ফাংশন অবজেক্ট তৈরি করতে ব্যবহৃত হয়। অবজেক্টগুলো ফাংশন তৈরি হওয়ার সময় পার্স হয়।
সিনট্যাক্স
new Function([arg1[, arg2[, ...argN]],] functionBody)
উদাহরণ
<html>
<body>
<script>
var multiply = new Function('p', 'q', 'r', 'return p * q * r');
document.write("Value after multiplication: " + multiply(5, 2, 9));
</script>
</body>
</html>
আউটপুট: Value after multiplication: 90
সতর্কতা এবং সীমাবদ্ধতা
- সিকিউরিটি রিস্ক:
eval()-এর মতো, স্ট্রিং থেকে কোড এক্সিকিউট করে - পারফরম্যান্স: প্রতিবার নতুন ফাংশন পার্স হয়, অপ্টিমাইজেশন কঠিন
- স্কোপ: শুধু গ্লোবাল স্কোপে তৈরি হয়, ক্লোজার তৈরি করে না
- ডিবাগিং: স্ট্যাক ট্রেসে "[anonymous]" বা "Function" দেখায়
তুলনা
| বিষয় | Function Constructor | Function Declaration | Function Expression | Arrow Function |
|---|---|---|---|---|
| পার্সিং টাইম | রানটাইম | পার্স টাইম | পার্স টাইম | পার্স টাইম |
| স্কোপ | গ্লোবাল | লেক্সিক্যাল | লেক্সিক্যাল | লেক্সিক্যাল |
| ক্লোজার | না | হ্যাঁ | হ্যাঁ | হ্যাঁ |
| this বাইন্ডিং | ডাইনামিক | ডাইনামিক | ডাইনামিক | লেক্সিক্যাল |
| সিকিউরিটি | রিস্কি | নিরাপদ | নিরাপদ | নিরাপদ |
কখন ব্যবহার করবেন (বিরল)
- ডাইনামিক কোড জেনারেশন (যেমন রুল ইঞ্জিন)
- ব্যবহারকারীর ইনপুট থেকে ফাংশন তৈরি (সানিটাইজেশন সহ)
- লাইব্রেরি ডেভেলপমেন্টে মেটা-প্রোগ্রামিং