new
জাভাস্ক্রিপ্ট মধ্যে শব্দ বেশ বিভ্রান্তিকর যখন এটি প্রথম সম্মুখীন করা হয়, মানুষ ভাবতে জাভাস্ক্রিপ্ট একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা নয় ঝোঁক হতে পারে।
- এটা কি?
- এটি কোন সমস্যার সমাধান করে?
- এটি কখন উপযুক্ত এবং কখন নয়?
new
জাভাস্ক্রিপ্ট মধ্যে শব্দ বেশ বিভ্রান্তিকর যখন এটি প্রথম সম্মুখীন করা হয়, মানুষ ভাবতে জাভাস্ক্রিপ্ট একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা নয় ঝোঁক হতে পারে।
উত্তর:
এটি 5 টি কাজ করে:
this
সদ্য নির্মিত বস্তুর পরিবর্তনশীল পয়েন্ট তৈরি করে।this
উল্লেখ করা হয়েছে সদ্য নির্মিত বস্তুটি ব্যবহার করে কনস্ট্রাক্টর ফাংশনটি কার্যকর করে ।null
অবজেক্ট রেফারেন্স দেয়। এই ক্ষেত্রে, সেই বস্তুর রেফারেন্স পরিবর্তে ফিরে আসে।নোট: কন্সট্রাকটর ফাংশন পর ফাংশন বোঝায় new
হিসাবে, শব্দ
new ConstructorFunction(arg1, arg2)
এটি হয়ে গেলে, নতুন বস্তুর কোনও অপরিজ্ঞাত সম্পত্তি অনুরোধ করা হলে স্ক্রিপ্টটি পরিবর্তে সম্পত্তিটির জন্য বস্তুর [[প্রোটোটাইপ]] অবজেক্টটি পরীক্ষা করবে । এইভাবে আপনি জাভাস্ক্রিপ্টে traditionalতিহ্যবাহী শ্রেণীর উত্তরাধিকারের মতো কিছু পেতে পারেন।
এই সম্পর্কে সবচেয়ে কঠিন অংশ বিন্দু সংখ্যা 2. প্রতিটি (ফাংশন সহ) বস্তুর এই অভ্যন্তরীণ সম্পত্তি বলা হয় [[প্রোটোটাইপ]] । এটি কেবলমাত্র অবজেক্ট তৈরির সময়, নতুন সহ, অবজেক্ট.ক্রিয়েট সহ বা আক্ষরিক (ফাংশন.প্রোটোটাইপের ফাংশন ডিফল্ট, সংখ্যা.প্রোটোটাইপ ইত্যাদির উপর ভিত্তি করে) ভিত্তিতে সেট করা যেতে পারে । এটি কেবলমাত্র অবজেক্ট.জেটপ্রোটোটাইপফ (কোনও কোনও অবজেক্ট) দিয়ে পড়া যায় । নেই কোন সেট না করা বা এই মান পড়তে অন্যান্য উপায়।
লুকানো [[প্রোটোটাইপ]] বৈশিষ্ট্য ছাড়াও ফাংশনগুলিরও প্রোটোটাইপ নামে একটি সম্পত্তি রয়েছে এবং এটি হ'ল আপনি যে জিনিসগুলি তৈরি করেন তার উত্তরাধিকারসূত্রে প্রাপ্ত বৈশিষ্ট্য এবং পদ্ধতি সরবরাহ করতে আপনি অ্যাক্সেস করতে এবং সংশোধন করতে পারবেন।
এখানে একটি উদাহরণ:
ObjMaker = function() {this.a = 'first';};
// ObjMaker is just a function, there's nothing special about it that makes
// it a constructor.
ObjMaker.prototype.b = 'second';
// like all functions, ObjMaker has an accessible prototype property that
// we can alter. I just added a property called 'b' to it. Like
// all objects, ObjMaker also has an inaccessible [[prototype]] property
// that we can't do anything with
obj1 = new ObjMaker();
// 3 things just happened.
// A new, empty object was created called obj1. At first obj1 was the same
// as {}. The [[prototype]] property of obj1 was then set to the current
// object value of the ObjMaker.prototype (if ObjMaker.prototype is later
// assigned a new object value, obj1's [[prototype]] will not change, but you
// can alter the properties of ObjMaker.prototype to add to both the
// prototype and [[prototype]]). The ObjMaker function was executed, with
// obj1 in place of this... so obj1.a was set to 'first'.
obj1.a;
// returns 'first'
obj1.b;
// obj1 doesn't have a property called 'b', so JavaScript checks
// its [[prototype]]. Its [[prototype]] is the same as ObjMaker.prototype
// ObjMaker.prototype has a property called 'b' with value 'second'
// returns 'second'
এটি শ্রেণীর উত্তরাধিকারের মতো কারণ এখন আপনি যে কোনও বস্তু ব্যবহার করে new ObjMaker()
তা 'বি' সম্পত্তি উত্তরাধিকার সূত্রে প্রাপ্ত বলে মনে হবে।
আপনি যদি সাবক্লাসের মতো কিছু চান তবে আপনি এটি করুন:
SubObjMaker = function () {};
SubObjMaker.prototype = new ObjMaker(); // note: this pattern is deprecated!
// Because we used 'new', the [[prototype]] property of SubObjMaker.prototype
// is now set to the object value of ObjMaker.prototype.
// The modern way to do this is with Object.create(), which was added in ECMAScript 5:
// SubObjMaker.prototype = Object.create(ObjMaker.prototype);
SubObjMaker.prototype.c = 'third';
obj2 = new SubObjMaker();
// [[prototype]] property of obj2 is now set to SubObjMaker.prototype
// Remember that the [[prototype]] property of SubObjMaker.prototype
// is ObjMaker.prototype. So now obj2 has a prototype chain!
// obj2 ---> SubObjMaker.prototype ---> ObjMaker.prototype
obj2.c;
// returns 'third', from SubObjMaker.prototype
obj2.b;
// returns 'second', from ObjMaker.prototype
obj2.a;
// returns 'first', from SubObjMaker.prototype, because SubObjMaker.prototype
// was created with the ObjMaker function, which assigned a for us
অবশেষে এই পৃষ্ঠাটি সন্ধানের আগে আমি এই বিষয়টিতে এক টন আবর্জনা পড়েছি , যেখানে এটি সুন্দর চিত্রের সাহায্যে খুব ভালভাবে ব্যাখ্যা করা হয়েছে।
ObjMaker
কোনও ফাংশন সংজ্ঞা দেওয়া হয় যা কোনও মান দেয়?
new
উপস্থিত রয়েছে যাতে আপনাকে ফাংশন / অবজেক্টগুলি তৈরি / অনুলিপি করার জন্য কারখানার পদ্ধতিগুলি লিখতে না হয় । এর অর্থ, "এটিকে অনুলিপি করুন, একে একে তার পিতামাতার 'শ্রেণির' মতো করে; দক্ষতার সাথে এবং সঠিকভাবে করুন; এবং উত্তরাধিকারের তথ্য সংরক্ষণ করুন যা কেবলমাত্র আমার কাছে জেএস, অভ্যন্তরীণভাবে অ্যাক্সেসযোগ্য। এটি করার জন্য, এটি prototype
উত্তরাধিকারী সদস্যদের স্বচ্ছভাবে encapsulate করতে ক্লাসিকাল OO উত্তরাধিকার শৃঙ্খলা (যা রানটাইম পরিবর্তনযোগ্য নয়) নকল করে নতুন বস্তুর অন্যথায় দুর্গম অভ্যন্তরীণ পরিবর্তন করে। আপনি এটি ছাড়া এটি অনুকরণ করতে পারেন new
, তবে উত্তরাধিকারটি রানটাইম পরিবর্তনযোগ্য হবে। ভাল? খারাপ? আপনার উপর
Notice that this pattern is deprecated!
। কোন শ্রেণীর প্রোটোটাইপ সেট করতে সঠিক আপ টু ডেট প্যাটার্নটি কী?
ধরুন আপনার এই ফাংশনটি রয়েছে:
var Foo = function(){
this.A = 1;
this.B = 2;
};
আপনি যদি এটির মতো স্ট্যান্ড্যালোন ফাংশন হিসাবে ডাকে:
Foo();
এই ফাংশনটি সম্পাদন করলে window
বস্তুর ( A
এবং B
) দুটি বৈশিষ্ট্য যুক্ত হবে । এটি এটিকে যুক্ত করে window
কারণ window
এটি এমন একটি বস্তু যা ফাংশন বলে যখন আপনি এটির মতো এটি this
সম্পাদন করেন এবং কোনও ফাংশনে সেই অবজেক্টকে ফাংশন বলে। অন্তত জাভাস্ক্রিপ্টে।
এখন, এটির সাথে এটি কল করুন new
:
var bar = new Foo();
আপনি যখন new
কোনও ফাংশন কলে যুক্ত করবেন তখন যা ঘটেছিল তা হ'ল একটি নতুন অবজেক্ট তৈরি করা হয়েছে (জাস্ট var bar = new Object()
) এবং this
ফাংশনটির ভিতরে থাকাটি Object
সবেমাত্র তৈরি করা নতুনটির দিকে ইঙ্গিত করে যা ফাংশন নামে পরিচিত বস্তুর পরিবর্তে। সুতরাং bar
এখন বৈশিষ্ট্য A
এবং একটি বস্তু হয় B
। যে কোনও ক্রিয়াকলাপ একজন নির্মাতা হতে পারে, এটি সর্বদা বুদ্ধিমান হয় না।
window
। এমনকি বন্ধ থাকলেও নামবিহীন। তবে, উদাহরণস্বরূপ এটি উইন্ডোতে একটি সহজ পদ্ধতি অনুরোধ: Foo();
=> [default context].Foo();
=> window.Foo();
। এই এক্সপ্রেশনে window
হয় প্রেক্ষাপটে (না শুধুমাত্র আহ্বানকারী , যা কোন ব্যাপার না)।
ড্যানিয়েল হাওয়ার্ডের উত্তর ছাড়াও, এখানে যা new
হয় (বা কমপক্ষে মনে হয়):
function New(func) {
var res = {};
if (func.prototype !== null) {
res.__proto__ = func.prototype;
}
var ret = func.apply(res, Array.prototype.slice.call(arguments, 1));
if ((typeof ret === "object" || typeof ret === "function") && ret !== null) {
return ret;
}
return res;
}
যদিও
var obj = New(A, 1, 2);
সমতুল্য
var obj = new A(1, 2);
func.prototype
হবে null
? আপনি কি দয়া করে কিছুটা ব্যাখ্যা করতে পারেন?
A.prototype = null;
সেই ক্ষেত্রে new A()
বস্তুর ফলস্বরূপ, অভ্যন্তরের অভ্যন্তরীণ প্রোটোটাইপটি পয়েন্টটি নির্দেশ করবে Object
: jsfiddle.net/Mk42Z
Object(ret) === ret
।
typeof
পরীক্ষাটি পর্দার আড়ালে কী চলছে তা বোঝা সহজ করে তোলে।
ব্রাউজার কনসোলে নিম্নলিখিত কোডটি ব্যবহার করে দেখুন।
function Foo() {
return this;
}
var a = Foo(); //returns window object
var b = new Foo(); //returns empty object of foo
a instanceof Window; // true
a instanceof Foo; // false
b instanceof Window; // false
b instanceof Foo; // true
এখন আপনি সম্প্রদায়টির উইকি উত্তরটি পড়তে পারেন :)
return this;
একই ফলন দেয়।
সুতরাং এটি সম্ভবত অবজেক্টের উদাহরণ তৈরি করার জন্য নয়
এটি ঠিক এটির জন্য ব্যবহার করা হয়েছে। আপনি যেমন একটি ফাংশন নির্মাণকারী সংজ্ঞায়িত:
function Person(name) {
this.name = name;
}
var john = new Person('John');
তবে ECMAScript এর অতিরিক্ত সুবিধাটি হ'ল আপনি .prototype
সম্পত্তিটির সাথে প্রসারিত করতে পারেন , তাই আমরা এর মতো কিছু করতে পারি ...
Person.prototype.getName = function() { return this.name; }
এই কন্সট্রাক্টর থেকে তৈরি সমস্ত অবজেক্টের getName
প্রোটোটাইপ চেইনের কারণে তাদের অ্যাক্সেস রয়েছে।
class
কীওয়ার্ড নেই তবে আপনি একই জিনিসটি করতে পারেন।
জাভাস্ক্রিপ্ট হ'ল একটি অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা এবং এটি দৃষ্টান্ত তৈরির জন্য সঠিকভাবে ব্যবহৃত হয়। এটি শ্রেণিবদ্ধের চেয়ে প্রোটোটাইপ-ভিত্তিক, তবে এর অর্থ এই নয় যে এটি বস্তু-ভিত্তিক নয়।
জাভাস্ক্রিপ্ট একটি গতিশীল প্রোগ্রামিং ল্যাঙ্গুয়েজ যা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্যারাডাইম সমর্থন করে, এবং এটি অবজেক্টের নতুন দৃষ্টান্ত তৈরি করতে ব্যবহৃত হয়।
ক্লাস অবজেক্টগুলির জন্য প্রয়োজনীয় নয় - জাভাস্ক্রিপ্ট একটি প্রোটোটাইপ ভিত্তিক ভাষা।
ইতিমধ্যে কিছু খুব দুর্দান্ত উত্তর রয়েছে তবে নীচে তৃতীয় ক্ষেত্রে আমার পর্যবেক্ষণের উপর জোর দেওয়ার জন্য আমি একটি নতুন পোস্ট করছি যা যখন আপনি কোনও ফাংশনে সুস্পষ্ট রিটার্নের বিবৃতি পাবেন তখন কী ঘটে new
। নীচের ক্ষেত্রে একবার দেখুন:
কেস আই :
var Foo = function(){
this.A = 1;
this.B = 2;
};
console.log(Foo()); //prints undefined
console.log(window.A); //prints 1
উপরেরটি দ্বারা চিহ্নিত অনামী ফাংশনটিকে কল করার একটি সরল মামলা Foo
। আপনি যখন এই ফাংশনটি কল করবেন তখন এটি ফিরে আসে undefined
। যেহেতু স্পষ্টরূপে কোনও রিটার্ন বিবৃতি নেই তাই জাভাস্ক্রিপ্ট ইন্টারপ্রেটার জোর return undefined;
করে ফাংশন শেষে একটি বিবৃতি .োকান । এখানে উইন্ডোটি হ'ল অনুরোধ বস্তু (প্রাসঙ্গিক this
) যা নতুন A
এবং B
বৈশিষ্ট্যগুলি পায় ।
কেস II :
var Foo = function(){
this.A = 1;
this.B = 2;
};
var bar = new Foo();
console.log(bar()); //illegal isn't pointing to a function but an object
console.log(bar.A); //prints 1
এখানে জাভাস্ক্রিপ্ট ইন্টারপ্রেটার new
কীওয়ার্ডটি দেখলে একটি নতুন অবজেক্ট তৈরি করে যা this
দ্বারা চিহ্নিত বেনামে ফাংশনটির আহ্বান অবজেক্ট (প্রাসঙ্গিক ) হিসাবে কাজ করে Foo
। এই ক্ষেত্রে A
এবং B
সদ্য নির্মিত বস্তুর (উইন্ডো অবজেক্টের জায়গায়) বৈশিষ্ট্য হয়ে উঠুন। যেহেতু আপনার কোনও সুস্পষ্ট রিটার্ন বিবৃতি নেই তাই জাভাস্ক্রিপ্ট ইন্টারপ্রেটার new
কীওয়ার্ডের ব্যবহারের কারণে তৈরি হওয়া নতুন অবজেক্টটিকে জোর করে একটি রিটার্ন স্টেটমেন্ট সন্নিবেশ করান ।
কেস III :
var Foo = function(){
this.A = 1;
this.B = 2;
return {C:20,D:30};
};
var bar = new Foo();
console.log(bar.C);//prints 20
console.log(bar.A); //prints undefined. bar is not pointing to the object which got created due to new keyword.
এখানে আবার জাভাস্ক্রিপ্ট ইন্টারপ্রেটার new
কীওয়ার্ডটি দেখলে একটি নতুন অবজেক্ট তৈরি করে যা this
দ্বারা চিহ্নিত বেনামে ফাংশনটির আহ্বান অবজেক্ট (প্রসঙ্গে ) হিসাবে কাজ করে Foo
। আবার, A
এবং B
নতুন নির্মিত বস্তুর বৈশিষ্ট্য হয়ে উঠুন। তবে এবার আপনার স্পষ্ট ফেরত বিবৃতি রয়েছে যাতে জাভাস্ক্রিপ্ট দোভাষী তার নিজস্ব কিছু করবেন না ।
তৃতীয় ক্ষেত্রে খেয়াল করার বিষয়টি হ'ল new
কীওয়ার্ডের কারণে তৈরি হওয়া অবজেক্টটি আপনার রাডার থেকে হারিয়ে গেছে। bar
আসলে একটি সম্পূর্ণ পৃথক বস্তুর দিকে ইঙ্গিত করছে যা new
কীওয়ার্ডের কারণে জাভাস্ক্রিপ্ট ইন্টারপ্রেটার তৈরি করেছে তা নয় ।
জাভাস্ক্রিপ্ট থেকে ডেভিড ফ্লানাগনের উদ্ধৃতি: সংজ্ঞা গাইড (6th ষ্ঠ সংস্করণ), সিএইচ। 4, পৃষ্ঠা # 62:
যখন কোনও বস্তু তৈরির এক্সপ্রেশনকে মূল্যায়ন করা হয়, তখন জাভাস্ক্রিপ্ট প্রথমে একটি নতুন খালি অবজেক্ট তৈরি করে, ঠিক যেমন initial initial অবজেক্টের তৈরির মতো one এরপরে, এটি নতুন শব্দটিকে এই কীওয়ার্ডের মান হিসাবে পাস করে নির্দিষ্ট আর্গুমেন্টগুলির সাথে নির্দিষ্ট ফাংশনটির অনুরোধ করে। ফাংশনটি সদ্য তৈরি হওয়া অবজেক্টের বৈশিষ্ট্যগুলি আরম্ভ করার জন্য এটি ব্যবহার করতে পারে। কনস্ট্রাক্টর হিসাবে ব্যবহারের জন্য রচিত ফাংশনগুলি কোনও মান ফেরত দেয় না এবং অবজেক্ট তৈরির এক্সপ্রেশনটির মান হ'ল নতুন তৈরি এবং আরম্ভকৃত বস্তু। যদি কোনও কনস্ট্রাক্টর কোনও বস্তুর মান ফেরত দেয় তবে সেই মানটি বস্তু তৈরির এক্সপ্রেশনটির মান হয়ে যায় এবং সদ্য নির্মিত বস্তুটি বাতিল করা হয়।
--- অতিরিক্ত তথ্য ---
উপরের মামলার কোড স্নিপেটে ব্যবহৃত ফাংশনগুলির নীচে যেমন জেএস বিশ্বে বিশেষ নাম রয়েছে:
কেস I এবং II - কনস্ট্রাক্টর ফাংশন
কেস III - কারখানার কার্যকারিতা। কার্টরি ফাংশনগুলি কীওয়ার্ডের সাথে ব্যবহার করা উচিত নয়new
যা আমি বর্তমান থ্রেডে ধারণাটি ব্যাখ্যা করতে পেরেছি।
আপনি এই থ্রেডে তাদের মধ্যে পার্থক্য সম্পর্কে পড়তে পারেন ।
কখনও কখনও কোড শব্দের চেয়ে সহজ:
var func1 = function (x) { this.x = x; } // used with 'new' only
var func2 = function (x) { var z={}; z.x = x; return z; } // used both ways
func1.prototype.y = 11;
func2.prototype.y = 12;
A1 = new func1(1); // has A1.x AND A1.y
A2 = func1(1); // undefined ('this' refers to 'window')
B1 = new func2(2); // has B1.x ONLY
B2 = func2(2); // has B2.x ONLY
আমার পক্ষে, যতক্ষণ না আমি প্রোটোটাইপ না করি, ততক্ষণ আমি ফান 2 এর স্টাইল ব্যবহার করি কারণ এটি আমাকে ফাংশনের ভিতরে এবং বাইরে কিছুটা নমনীয়তা দেয়।
B1 = new func2(2);
<- কেন হবে না B1.y
?
new
শব্দ প্রেক্ষাপটে যার অধীনে ফাংশন চালানো হচ্ছে পরিবর্তন আর এ প্রসঙ্গে একটি পয়েন্টার ফেরৎ।
আপনি যখন new
কীওয়ার্ডটি ব্যবহার করবেন না , তখন যে ফাংশনটির অধীনে ফাংশনটি Vehicle()
চালিত হয় সেই প্রসঙ্গটি একই প্রসঙ্গটি থেকে আপনি Vehicle
ফাংশনটি কল করছেন । মূল this
শব্দটি একই প্রসঙ্গে পড়বে। আপনি যখন ব্যবহার করবেন তখন new Vehicle()
একটি নতুন প্রসঙ্গ তৈরি করা হবে যাতে this
ফাংশনের ভিতরে কীওয়ার্ডটি নতুন প্রসঙ্গকে বোঝায়। বিনিময়ে আপনি যা পান তা হ'ল নতুন তৈরি প্রসঙ্গ।
মূল new
শব্দটি নতুন অবজেক্টের উদাহরণ তৈরি করার জন্য। এবং হ্যাঁ, জাভাস্ক্রিপ্ট একটি গতিশীল প্রোগ্রামিং ল্যাঙ্গুয়েজ, যা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্যারাডিজমকে সমর্থন করে। অবজেক্টের নামকরণ সম্পর্কে কনভেনশনটি হ'ল নতুন কীওয়ার্ডের মাধ্যমে তাত্ক্ষণিকভাবে চিহ্নিত হওয়া অবজেক্টের জন্য সর্বদা বড় অক্ষর ব্যবহার করুন।
obj = new Element();
new
শব্দ একটি কন্সট্রাকটর ফাংশন থেকে একটি বস্তু তৈরি করতে দয়া করে জাভাস্ক্রিপ্ট ব্যবহার করা হয়। new
শব্দ সামনে কন্সট্রাকটর ফাংশন কল স্থাপন করা হবে এবং নিম্নোক্ত যে কি হবে:
this
নতুন তৈরি হওয়া অবজেক্টটিতে কীওয়ার্ডকে আবদ্ধ করে এবং কনস্ট্রাক্টর ফাংশনটি কার্যকর করেfunction Dog (age) {
this.age = age;
}
const doggie = new Dog(12);
console.log(doggie);
console.log(doggie.__proto__ === Dog.prototype) // true
ঠিক কী ঘটে:
const doggie
বলেছেন: ভেরিয়েবল ঘোষণার জন্য আমাদের স্মৃতি দরকার।=
বলেছেন: আমরা এই ভেরিয়েবলটি এর পরে এক্সপ্রেশন দিয়ে শুরু করতে যাচ্ছি=
new Dog(12)
। জেএস ইঞ্জিনটি নতুন কীওয়ার্ডটি দেখে, একটি নতুন অবজেক্ট তৈরি করে এবং প্রোটোটাইপটিকে ডগ.প্রোটোটাইপ সেট করেthis
নতুন অবজেক্টে মান সেট করে নির্বাহ করা হয় । এই পদক্ষেপে যেখানে বয়সটি তৈরি করা হয়েছে নতুন তৈরি কুকি অবজেক্টকে।new
শব্দ একটি কন্সট্রাকটর যেমন ফাংশন ব্যবহার করে বস্তুর দৃষ্টান্ত সৃষ্টি করে। এই ক্ষেত্রে:
var Foo = function() {};
Foo.prototype.bar = 'bar';
var foo = new Foo();
foo instanceof Foo; // true
উদাহরণগুলি prototype
কনস্ট্রাক্টর ফাংশন থেকে উত্তরাধিকার সূত্রে প্রাপ্ত । সুতরাং উপরের উদাহরণ দেওয়া ...
foo.bar; // 'bar'
ওয়েল জাভা স্ক্রিপ্ট প্রতি প্ল্যাটফর্ম থেকে প্ল্যাটফর্মের থেকে আলাদা হতে পারে কারণ এটি সর্বদা মূল স্পেসিফিকেশন ইকামাস্ক্রিপ্টের প্রয়োগ implementation
যে কোনও ক্ষেত্রে, স্বাধীনভাবে বাস্তবে প্রয়োগের সমস্ত জাভাস্ক্রিপ্ট বাস্তবায়ন যা ইকামাস্ক্রিপ্টের বিশদটি সঠিকভাবে অনুসরণ করে, আপনাকে একটি অবজেক্ট ওরিয়েন্টেড ভাষা দেবে। ES মান অনুযায়ী:
ইস্কামস্ক্রিপ্ট একটি হোস্ট এনভায়রনমেন্টের মধ্যে গণনা সম্পাদন এবং গণনামূলক অবজেক্টগুলি পরিচালনা করার জন্য একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ।
সুতরাং এখন যে আমরা সম্মত হয়েছি যে জাভাস্ক্রিপ্ট হ'ল একমা স্ক্রিপ্ট একটি বাস্তবায়ন এবং তাই এটি একটি বস্তু-ভিত্তিক ভাষা। যে new
কোনও অবজেক্ট-ভিত্তিক ভাষায় অপারেশনের সংজ্ঞাটি বলছে যে এই জাতীয় কীওয়ার্ডটি নির্দিষ্ট ধরণের শ্রেণি থেকে কোনও বস্তুর উদাহরণ তৈরি করতে ব্যবহৃত হয় (বেনামে টাইপ সহ, সি # এর মতো ক্ষেত্রে)।
ইকামাস্ক্রিপ্টে আমরা ক্লাস ব্যবহার করি না, যেমন আপনি চশমা থেকে পড়তে পারেন:
ইসমাস্ক্রিপ্ট সি ++, ছোট্টকল বা জাভা শ্রেণীর মতো ক্লাস ব্যবহার করে না। এর পরিবর্তে অবজেক্টগুলি আক্ষরিক স্বরলিপি বা কনস্ট্রাক্টরগুলির মাধ্যমে বিভিন্ন উপায়ে তৈরি করা যেতে পারে যা বস্তু তৈরি করে এবং তারপরে কোডটি কার্যকর করে যা তাদের বৈশিষ্ট্যগুলিতে প্রাথমিক মান নির্ধারণ করে তাদের সমস্ত বা কিছু অংশ সূচনা করে। প্রতিটি কন্সট্রাক্টর একটি ফাংশন যার নামযুক্ত সম্পত্তি রয়েছে - প্রোটোটাইপ prot যা প্রোটোটাইপ ভিত্তিক উত্তরাধিকার এবং ভাগ করা বৈশিষ্ট্যগুলি প্রয়োগ করতে ব্যবহৃত হয়।
নতুন এক্সপ্রেশনে কনস্ট্রাক্টর ব্যবহার করে অবজেক্ট তৈরি করা হয় ; উদাহরণস্বরূপ, নতুন তারিখ (২০০৯,11) একটি নতুন তারিখ অবজেক্ট তৈরি করে। নতুন ব্যবহার না করেই কন্সট্রাক্টরকে আহ্বান করাতে পরিণতিগুলি কনস্ট্রাক্টরের উপর নির্ভর করে। উদাহরণস্বরূপ, তারিখ () কোনও অবজেক্টের পরিবর্তে বর্তমান তারিখ এবং সময়টির একটি স্ট্রিং প্রতিনিধিত্ব করে।