ক্রকফোর্ড ভাল জাভাস্ক্রিপ্ট কৌশল জনপ্রিয় করতে প্রচুর কাজ করেছে। ভাষার মূল উপাদানগুলির বিষয়ে তাঁর মতামতমূলক অবস্থান অনেক কার্যকর আলোচনার জন্ম দিয়েছে। এটি বলেছে যে, অনেক লোক রয়েছে যারা "খারাপ" বা "ক্ষতিকারক" প্রতিটি প্রচারকে সুসমাচার হিসাবে গ্রহণ করে এবং একজনের মতামতের বাইরে দেখার প্রত্যাখ্যান করে। এটি সময়ে কিছুটা হতাশ হতে পারে।
মূলশব্দ দ্বারা প্রদত্ত কার্যকারিতাটির ব্যবহার newস্ক্র্যাচ থেকে প্রতিটি বস্তু তৈরির বিভিন্ন সুবিধা রয়েছে:
- প্রোটোটাইপ উত্তরাধিকার । শ্রেণিভিত্তিক ওও ভাষাগুলিতে অভ্যস্ত লোকদের দ্বারা প্রায়শই সন্দেহ এবং উপহাসের মিশ্রণের সাথে নজর দেওয়া হলেও জাভাস্ক্রিপ্টের নেটিভ উত্তরাধিকার কৌশল কোডটি পুনরায় ব্যবহারের একটি সহজ এবং আশ্চর্যজনক কার্যকর উপায় means এবং নতুন কীওয়ার্ডটি হ'ল এটি ব্যবহারের মাধ্যমটি (এবং কেবলমাত্র উপলব্ধ ক্রস প্ল্যাটফর্ম)।
- কর্মক্ষমতা. এটি # 1 এর পার্শ্ব-প্রতিক্রিয়া: আমি যদি তৈরি করি প্রতিটি বস্তুতে 10 টি পদ্ধতি যুক্ত করতে চাই, আমি কেবল একটি ক্রিয়াকলাপ লিখতে পারতাম যা প্রতিটি নতুন অবজেক্টে ম্যানুয়ালি প্রতিটি পদ্ধতি নির্ধারিত করে ... বা, আমি তাদের এগুলিকে নির্ধারণ করতে পারতাম সৃষ্টি ফাংশন
prototypeএবং newনতুন বস্তু স্ট্যাম্প আউট ব্যবহার । কেবল এটিই দ্রুত নয় (প্রোটোটাইপের প্রতিটি পদ্ধতির জন্য কোনও কোডের প্রয়োজন নেই), এটি প্রতিটি পদ্ধতির জন্য পৃথক বৈশিষ্ট্যযুক্ত প্রতিটি বস্তুকে বেলুন করা এড়িয়ে চলে। ধীর মেশিনগুলিতে (বা বিশেষত ধীর জেএস দোভাষী) যখন অনেকগুলি অবজেক্ট তৈরি করা হয় তার অর্থ সময় এবং স্মৃতিতে একটি উল্লেখযোগ্য সঞ্চয় হতে পারে।
এবং হ্যাঁ, newএর একটি গুরুতর অসুবিধা রয়েছে, অন্য উত্তরগুলির দ্বারা একেবারে বর্ণিত: আপনি যদি এটি ব্যবহার করতে ভুলে যান তবে আপনার কোডটি সতর্কতা ছাড়াই ভেঙে যাবে। ভাগ্যক্রমে, সেই অসুবিধা সহজেই হ্রাস করা যায় - কেবল ফাংশনে নিজেই কিছুটা কোড যুক্ত করুন:
function foo()
{
// if user accidentally omits the new keyword, this will
// silently correct the problem...
if ( !(this instanceof foo) )
return new foo();
// constructor logic follows...
}
newদুর্ঘটনাক্রমে অপব্যবহারের কারণে সৃষ্ট সমস্যা সম্পর্কে চিন্তা না করে এখন আপনার সুবিধা থাকতে পারে । এমনকি যদি ভাঙা কোডটি নীরবে কাজ করার চিন্তা আপনাকে বিরক্ত করে তবে আপনি এই চেকটিতে একটি যুক্তি যুক্ত করতে পারেন। বা, কিছু মন্তব্য হিসাবে , একটি রানটাইম ব্যতিক্রম প্রবর্তন করতে চেক ব্যবহার করুন:
if ( !(this instanceof arguments.callee) )
throw new Error("Constructor called as a function");
(নোট করুন যে এই স্নিপেটটি কন্সট্রাক্টর ফাংশনটির নামটি হার্ড-কোডিং এড়াতে সক্ষম হয়েছে, পূর্ববর্তী উদাহরণের বিপরীতে এটি আসলে বস্তুর তাত্ক্ষণিককরণ করার প্রয়োজন নেই - অতএব, এটি প্রতিটি লক্ষ্য ফাংশনে কোনও সংশোধন ছাড়াই অনুলিপি করা যেতে পারে))
জন রেসিগ তার সহজ "ক্লাস" ইনস্ট্যান্টেশন পোস্টে এই কৌশলটির বিশদ বিবরণে পাশাপাশি ডিফল্টরূপে আপনার "ক্লাস" এ এই আচরণটি গড়ে তোলার মাধ্যমকে অন্তর্ভুক্ত করেছেন। নিশ্চিতভাবে মূল্য একটি পড়া ... হিসেবে তার আসন্ন বই, হয় জাভাস্ক্রিপ্ট নিনজা অফ সিক্রেটস , যা এই এবং অনেক অন্যান্য "ক্ষতিকর" সোনার গোপন খুঁজে বের করে জাভাস্ক্রিপ্ট ভাষার Features ( অধ্যায় উপর withবিশেষত আমাদের তাদের জন্য জ্ঞানগর্ভ কে প্রাথমিকভাবে বরখাস্ত একটি গেমিক হিসাবে এই বহু-ম্যালেন্ডেড বৈশিষ্ট্য)।