এটির মতো অ্যারে ঘোষণার মধ্যে আসল পার্থক্য কী:
var myArray = new Array();
এবং
var myArray = [];
এটির মতো অ্যারে ঘোষণার মধ্যে আসল পার্থক্য কী:
var myArray = new Array();
এবং
var myArray = [];
উত্তর:
পার্থক্য আছে, তবে সেই উদাহরণে কোনও পার্থক্য নেই।
আরও ভার্বোজ পদ্ধতি ব্যবহার করে: new Array()
প্যারামিটারগুলিতে একটি অতিরিক্ত বিকল্প রয়েছে: আপনি যদি কোনও সংখ্যক কনস্ট্রাক্টরের কাছে পাস করেন তবে আপনি সেই দৈর্ঘ্যের একটি অ্যারে পাবেন:
x = new Array(5);
alert(x.length); // 5
অ্যারে তৈরির বিভিন্ন উপায় বর্ণনা করার জন্য:
var a = [], // these are the same
b = new Array(), // a and b are arrays with length 0
c = ['foo', 'bar'], // these are the same
d = new Array('foo', 'bar'), // c and d are arrays with 2 strings
// these are different:
e = [3] // e.length == 1, e[0] == 3
f = new Array(3), // f.length == 3, f[0] == undefined
;
আর একটি পার্থক্য হ'ল new Array()
আপনি যখন ব্যবহার করছেন তখন অ্যারের আকার নির্ধারণ করতে সক্ষম হবেন যা স্ট্যাকের আকারকে প্রভাবিত করে। আপনি যদি স্ট্যাকের ওভারফ্লোগুলি পেয়ে যাচ্ছেন ( অ্যারে.পুশ বনাম অ্যারে.উনশিফ্টের পারফরম্যান্স ) পান তবে এটি কার্যকর হবে যা অ্যারের আকার স্ট্যাকের আকারের চেয়ে বেশি হয়ে যায় এবং এটি আবার তৈরি করতে হয়। সুতরাং ব্যবহারের ক্ষেত্রে নির্ভর করে, ব্যবহারের সময় একটি কার্যকারিতা বৃদ্ধি new Array()
করতে পারে কারণ আপনি ওভারফ্লোটি ঘটতে বাধা দিতে পারেন।
এই উত্তরে নির্দেশিত হিসাবে , অ্যারেতে new Array(5)
পাঁচটি undefined
আইটেম যুক্ত হবে না । এটি কেবল পাঁচটি আইটেমের জন্য স্থান যুক্ত করে। সচেতন থাকুন যে Array
এই উপায়টি array.length
ব্যবহার করা গণনার উপর নির্ভর করা কঠিন করে তোলে ।
অন্তর্নির্মিত অ্যারে এবং অ্যারে নির্মাণকারী দ্বারা একটি অ্যারে তৈরি করার মধ্যে পার্থক্যটি সূক্ষ্ম তবে গুরুত্বপূর্ণ।
আপনি যখন একটি অ্যারে ব্যবহার করে তৈরি করবেন
var a = [];
আপনি দোভাষীকে একটি নতুন রানটাইম অ্যারে তৈরি করতে বলছেন। কোনও অতিরিক্ত প্রক্রিয়া করার প্রয়োজন নেই। সম্পন্ন.
আপনি যদি ব্যবহার করেন:
var a = new Array();
আপনি দোভাষীকে বলছেন, আমি কনস্ট্রাক্টরকে কল করতে চাই "Array
" এবং একটি অবজেক্ট তৈরি । এটির পরে নির্বাহককে কল করার সন্ধান করতে এবং আপনার অ্যারে তৈরি করে এটি কল করার জন্য এটি কার্যকর করা প্রসঙ্গে দেখা যায় looks
আপনি ভাবতে পারেন "আচ্ছা, এগুলি মোটেই কিছু যায় আসে না They এরা একই রকম!"। দুর্ভাগ্যক্রমে আপনি যে গ্যারান্টি দিতে পারেন না।
নিম্নলিখিত উদাহরণটি ধরুন:
function Array() {
this.is = 'SPARTA';
}
var a = new Array();
var b = [];
alert(a.is); // => 'SPARTA'
alert(b.is); // => undefined
a.push('Woa'); // => TypeError: a.push is not a function
b.push('Woa'); // => 1 (OK)
উপরের উদাহরণে, প্রথম কলটি 'স্পার্টা' কে সতর্ক করবে যেমনটি আপনি আশা করেছিলেন। দ্বিতীয়টি করবে না। আপনি অপরিবর্তিত দেখতে শেষ হবে। আপনি আরও খেয়াল করতে পারেন যে বিতে নেটিভ অ্যারে অবজেক্টের সমস্ত ফাংশন রয়েছে যেমন push
অন্যটি না করে।
আপনি যখন এটি হতে পারে আশা করতে পারেন, এটি কেবল সেই সত্যটি চিত্রিত করে যা এর []
মতো নয়new Array()
।
[]
আপনি যদি জানেন যে আপনি কেবল একটি অ্যারে চান তবে কেবল এটি ব্যবহার করা ভাল । আমি আরে ঘুরে ঘুরে এবং নতুন সংজ্ঞা দেওয়ার পরামর্শ দিচ্ছি না ...
একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে যা কোনও উত্তর এখনও উল্লেখ করেনি।
এটা থেকে:
new Array(2).length // 2
new Array(2)[0] === undefined // true
new Array(2)[1] === undefined // true
আপনি সম্ভবত new Array(2)
সমান বলে মনে করতে পারেন [undefined, undefined]
, কিন্তু এটি না!
এর সাথে চেষ্টা করুন map()
:
[undefined, undefined].map(e => 1) // [1, 1]
new Array(2).map(e => 1) // "(2) [undefined × 2]" in Chrome
দেখা? শব্দার্থবিজ্ঞান সম্পূর্ণ আলাদা! তাহলে কেন?
ইএস 6 স্পেক 22.1.1.2 অনুসারে, কাজটি Array(len)
কেবল একটি নতুন অ্যারে তৈরি করছে যার সম্পত্তি length
যুক্তিতে সেট করা আছে len
এবং এটি এটি, যার অর্থ কোনও আসল উপাদান নেই এই সদ্য নির্মিত অ্যারের ভিতরে ।
ফাংশন map()
, অনুমান অনুযায়ী 22.1.3.15 প্রথমে HasProperty
কলব্যাক কল করে চেক করবে , তবে দেখা যাচ্ছে যে:
new Array(2).hasOwnProperty(0) // false
[undefined, undefined].hasOwnProperty(0) // true
এবং এজন্যই আপনি যে কোনও পুনরাবৃত্তি ফাংশনগুলি তৈরি করা অ্যারেতে যথারীতি কাজ করতে পারবেন তা আশা করতে পারবেন না new Array(len)
।
বিটিডাব্লু, সাফারি এবং ফায়ারফক্সের এই অবস্থার জন্য আরও একটি "মুদ্রণ" রয়েছে:
// Safari
new Array(2) // [](2)
new Array(2).map(e => 1) // [](2)
[undefined, undefined] // [undefined, undefined] (2)
// Firefox
new Array(2) // Array [ <2 empty slots> ]
new Array(2).map(e => 1) // Array [ <2 empty slots> ]
[undefined, undefined] // Array [ undefined, undefined ]
আমি ইতিমধ্যে ক্রোমিয়ামে একটি সমস্যা জমা দিয়েছি এবং তাদের এই বিভ্রান্তিকর মুদ্রণটি ঠিক করতে বলছি: https://bugs.chromium.org/p/chromium/issues/detail?id=732021
আপডেট: এটি ইতিমধ্যে ঠিক করা হয়েছে। ক্রোম এখন এই হিসাবে মুদ্রিত:
new Array(2) // (2) [empty × 2]
[...Array(2)]
যার জন্য নথিভুক্ত রেফারেন্সগুলি খুঁজে পাচ্ছি না: যা [undefined, undefined]
ফলাফলের দৃষ্টিকোণ থেকে সমান ।
undefined
যথারীতি খালি স্লট রিটার্ন পড়া ।
অদ্ভুতভাবে যথেষ্ট, ক্রোমের new Array(size)
তুলনায় প্রায় 2x দ্রুত []
এবং এফএফ এবং আইই ( প্রায়শই একটি অ্যারে তৈরি করে এবং পূরণ করে) faster আপনি যদি অ্যারের আনুমানিক আকার জানেন তবে এটি কেবল গুরুত্বপূর্ণ। আপনি যে দৈর্ঘ্যের চেয়ে বেশি আইটেম যুক্ত করেছেন তা পারফরম্যান্সের বুস্টটি হারাবে।
আরও সঠিকভাবে: Array(
একটি দ্রুত ধ্রুবক সময় অপারেশন যা কোনও মেমরি বরাদ্দ করে না, ভেরাস []
একটি রৈখিক সময় অপারেশন যা প্রকার এবং মান নির্ধারণ করে।
new Array(length)
0 <= আকার <= ~ 1000, আকারে> ~ 1000 জিততে কিছু পরিমাণ আইটেম অ্যারে []
আরও তথ্যের জন্য, নীচের পৃষ্ঠাটি আপনাকে কখনই ব্যবহারের প্রয়োজন হবে না তা বর্ণনা করেnew Array()
আপনার কখনই
new Object()
জাভাস্ক্রিপ্টে ব্যবহার করার দরকার নেই ।{}
পরিবর্তে অবজেক্টটি আক্ষরিক ব্যবহার করুন। একইভাবে, পরিবর্তেnew Array()
অ্যারের আক্ষরিক ব্যবহার করবেন না[]
। জাভাস্ক্রিপ্টে অ্যারে জাভাতে অ্যারের মতো কিছুই কাজ করে না এবং জাভা-এর মতো সিনট্যাক্স ব্যবহার আপনাকে বিভ্রান্ত করবে।ব্যবহার করবেন না
new Number
,new String
অথবাnew Boolean
। এই ফর্মগুলি অপ্রয়োজনীয় বস্তু মোড়ক উত্পাদন করে। পরিবর্তে কেবল সহজ আক্ষরিক ব্যবহার করুন।
এছাড়াও মন্তব্যগুলি পরীক্ষা করে দেখুন - new Array(length)
ফর্মটি কোনও কার্যকর উদ্দেশ্য উপস্থাপন করে না (কমপক্ষে জাভাস্ক্রিপ্টের আজকের বাস্তবায়নে)।
যাতে আরও ভাল বোঝার জন্য []
এবং new Array()
:
> []
[]
> new Array()
[]
> [] == []
false
> [] === []
false
> new Array() == new Array()
false
> new Array() === new Array()
false
> typeof ([])
"object"
> typeof (new Array())
"object"
> [] === new Array()
false
> [] == new Array()
false
উপরের ফলাফলটি উইন্ডোজ 7 এ গুগল ক্রোম কনসোল থেকে এসেছে।
Array(3)
বা new Array(3)
তেমন হয় না [3]
।
প্রথমটি হ'ল ডিফল্ট অবজেক্ট কনস্ট্রাক্টর কল। আপনি চাইলে এর পরামিতিগুলি ব্যবহার করতে পারেন।
var array = new Array(5); //initialize with default length 5
দ্বিতীয়টি আপনাকে খালি অ্যারে না তৈরি করার ক্ষমতা দেয়:
var array = [1, 2, 3]; // this array will contain numbers 1, 2, 3.
var array = [5]
বর্গাকার বন্ধনী ব্যবহার করে কিন্তু নির্মাণকারীর ব্যবহার না করে var array = Array(5)
5 উপাদানগুলির খালি অ্যারে তৈরি করতে পারেন।
ফ্রেড্রিকের ভালটির উপর ভিত্তি করে এই উদাহরণটি দিয়ে শুরু করে আমি আরও নির্দিষ্ট উপায়ে ব্যাখ্যা করতে পারি।
var test1 = [];
test1.push("value");
test1.push("value2");
var test2 = new Array();
test2.push("value");
test2.push("value2");
alert(test1);
alert(test2);
alert(test1 == test2);
alert(test1.value == test2.value);
আমি অ্যারেগুলিতে আরও একটি মান যুক্ত করেছি, এবং চারটি সতর্কতা করেছি: মানগুলি সম্পর্কে নিশ্চিত হওয়ার জন্য প্রথম এবং দ্বিতীয়টি হ'ল প্রতিটি অ্যারেতে সঞ্চিত মান আমাদের দেওয়া। তারাও আবার ফিরে আসবে! এখন তৃতীয়টি চেষ্টা করুন, এটি মিথ্যা প্রত্যাবর্তন করবে, কারণ এটি
জেএস টেস্ট 1 কে একটি ডেটা টাইপের অ্যারে দিয়ে ভেরিয়েবল হিসাবে বিবেচনা করে , এবং এটি একইরূপে test2 | একটি যেমন একটি অ্যারের বৈশিষ্ট্য সহ অবজেক্ট , এবং কয়েক অসম্মান পার্থক্য এখানে।
প্রথম পার্থক্যটি যখন আমরা টেস্ট 1 বলি তখন এটি ভেবে ভেবে চলককে কল করে, এটি কেবল এই মানগুলিকে ফিরিয়ে দেয় যা এই ভেরিয়েবলটিতে সংরক্ষণ করা হয় যা তার ডেটা টাইপকে উপেক্ষা করে! কিন্তু, যখন আমরা টেস্ট 2 বলি তখন এটি অ্যারে () ফাংশনটিকে কল করে এবং তারপরে এটি আমাদের "পুশড" মানগুলিকে তার "মান" বৈশিষ্ট্যে সংরক্ষণ করে এবং যখন আমরা পরীক্ষা 2 সতর্ক করি তখন এটি অ্যারে অবজেক্টের "মান" বৈশিষ্ট্যটি প্রদান করে।
সুতরাং যখন আমরা পরীক্ষা করি যে টেস্ট 1 অবশ্যই টেস্ট 2 এর সমান হয় তবে তারা কখনই সত্য হয় না, একটি ফাংশন এবং অন্যটি একটি ভেরিয়েবল (এক ধরণের অ্যারে সহ), এমনকি যদি তাদের মান একই থাকে!
এটি সম্পর্কে নিশ্চিত হতে, 4 তম সতর্কতা চেষ্টা করুন, মূল্যটি এতে যুক্ত হয়েছে; এটা সত্য ফিরে আসবে। এই ক্ষেত্রে আমরা জেএসকে বলি "কনটেইনার ধরণের বিষয়টি উপেক্ষা করা, এটি কার্যকর ছিল বা পরিবর্তনশীল, দয়া করে প্রতিটি পাত্রে সঞ্চিত মানগুলি তুলনা করুন এবং আপনি কী দেখেছেন তা আমাদের জানান!" ঠিক তাই ঘটে।
আমি আশা করি আমি এর পিছনে ধারণাটি পরিষ্কারভাবে বলেছি, এবং আমার খারাপ ইংরেজির জন্য দুঃখিত।
[]
এবং new Array()
অভিন্ন; .value
হতে হবে undefined
উভয় ক্ষেত্রেই, এবং তাদের তুলনা সবসময় মিথ্যা হবে।
array.value
। এবং উভয় typeof []
এবং typeof new Array()
ফিরে object
। এটি একটি কারণ হওয়ার কারণগুলির মধ্যে একটিArray.isArray
আপনি কোনও দৈর্ঘ্য ছাড়াই অ্যারে শুরু করার সময় কোনও পার্থক্য নেই। সুতরাং var a = []
এবং var b = new Array()
একই।
আপনি যদি দৈর্ঘ্যের মতো অ্যারের সূচনা করেন তবে var b = new Array(1);
এটি অ্যারের অবজেক্টের দৈর্ঘ্য 1 তে সেট করবে So সুতরাং এর সমতুল্য var b = []; b.length=1;
।
আপনি যখন অ্যারে_বজেক্ট.পুশ করবেন তখন এটি সমস্যাযুক্ত হবে, এটি শেষ উপাদানটির পরে আইটেম যুক্ত করে দৈর্ঘ্য বাড়িয়ে তুলবে।
var b = new Array(1);
b.push("hello world");
console.log(b.length); // print 2
বনাম
var v = [];
a.push("hello world");
console.log(b.length); // print 1
প্রথমটি হ'ল ডিফল্ট অবজেক্ট কনস্ট্রাক্টর কল most প্রায়শই গতিশীল মানগুলির জন্য ব্যবহৃত হয়।
var array = new Array(length); //initialize with default length
স্থির মান তৈরি করার সময় দ্বিতীয় অ্যারে ব্যবহার করা হয়
var array = [red, green, blue, yellow, white]; // this array will contain values.
কোনও বড় পার্থক্য নেই, তারা মূলত একই জিনিসটি করে তবে তাদের বিভিন্ন উপায়ে করে, তবে পড়ুন, ডাব্লু 3 সি-তে এই বিবৃতিটি দেখুন:
var cars = ["Saab", "Volvo","BMW"];
এবং
var cars = new Array("Saab", "Volvo", "BMW");
উপরের দুটি উদাহরণ ঠিক একই কাজ করে। নতুন অ্যারে () ব্যবহার করার দরকার নেই।
সরলতা, পাঠযোগ্যতা এবং সম্পাদনের গতির জন্য, প্রথমটি ব্যবহার করুন (অ্যারে আক্ষরিক পদ্ধতি)।
তবে একই সময়ে, new Array
সিন্ট্যাক্সকে একটি খারাপ অনুশীলন হিসাবে বিবেচনা করে নতুন অ্যারে তৈরি করা :
নতুন অ্যারে এড়ানো ()
জাভাস্ক্রিপ্টের অন্তর্নির্মিত অ্যারে নির্মাণকারী নতুন অ্যারে () ব্যবহার করার দরকার নেই।
পরিবর্তে [] ব্যবহার করুন।
এই দুটি পৃথক বিবৃতি উভয় একটি নতুন খালি অ্যারে নামের পয়েন্ট তৈরি করে:
var points = new Array(); // Bad
var points = []; // Good
এই দুটি পৃথক বিবৃতি উভয়ই একটি নতুন অ্যারে তৈরি করে 6 টি সংখ্যা:
var points = new Array(40, 100, 1, 5, 25, 10); // Bad
var points = [40, 100, 1, 5, 25, 10]; // Good
নতুন শব্দ শুধুমাত্র কোড complicates। এটি কিছু অপ্রত্যাশিত ফলাফলও আনতে পারে:
var points = new Array(40, 100); // Creates an array with two elements (40 and 100)
আমি যদি উপাদানগুলির একটি অপসারণ করি?
var points = new Array(40); // Creates an array with 40 undefined elements !!!!!
সুতরাং মূলত সেরা অনুশীলন হিসাবে বিবেচনা করা হয় না, সেখানে একটি সামান্য পার্থক্যও রয়েছে, আপনি এটি পছন্দ করতে দৈর্ঘ্যটি পার করতে পারেন new Array(length)
, এটি একটি প্রস্তাবিত উপায়ও নয়।
new Array(40).fill(123)
ব্যবহারের পার্থক্য
var arr = new Array(size);
অথবা
arr = [];
arr.length = size;
যেমন এই প্রশ্নে যথেষ্ট আলোচনা করা হয়েছে।
আমি গতির সমস্যাটি যুক্ত করতে চাই - বর্তমানের দ্রুততম উপায়টি google chrome
দ্বিতীয়টি second
তবে মনোযোগ দিন, আপডেটগুলি সহ এই জিনিসগুলি অনেকগুলি পরিবর্তিত করে। এছাড়াও রান সময় বিভিন্ন ব্রাউজারের মধ্যে পৃথক হবে।
উদাহরণস্বরূপ - আমি উল্লেখ করেছি যে ২ য় বিকল্পটি 2 মিলিয়ন [অপস / সেকেন্ড] এ চলে chrome
, তবে আপনি যদি এটি চেষ্টা করে দেখেন তবে আপনি mozilla dev.
আশ্চর্যজনকভাবে 23 মিলিয়ন উচ্চ হার পাবেন।
যাই হোক, আমি তোমাকে একটা সময় একবার আউট এটি পরীক্ষা, যে, বিভিন্ন ব্রাউজারের (এবং মেশিন) এ, সাইট ব্যবহার করার সুপারিশ করছি যেমন
আমি থাকল জানেন U ফালি (অথবা অ্যারের অন্যান্য বিচারিক) -এর মত জানতে পারেন code1 .এবং code2 তোমার দর্শন লগ করা দেন এরে ও তার দৃষ্টান্ত :
code1:
[].slice; // find slice here
var arr = new Array();
arr.slice // find slice here
Array.prototype.slice // find slice here
code2:
[].__proto__ == Array.prototype; // true
var arr = new Array();
arr.__proto__ == Array.prototype; // true
উপসংহার:
যেমন আপনি অ্যারেটির একটি নতুন উদাহরণ দেখতে []
এবং new Array()
তৈরি করতে পারেন nd এবং তারা সকলেই এর থেকে প্রোটোটাইপ ফাংশন পানArray.prototype
তারা অ্যারেগুলির ভিন্ন ভিন্ন উদাহরণ so সুতরাং এটির কারণটি explain
[] != []
:)
আমি [] ব্যবহার করে একটি অদ্ভুত আচরণে ব্যয় করেছি।
আমাদের ক্ষেত্রগুলির সাথে কিছু মান থেকে প্রাথমিকভাবে মডেল "ক্লাস" রয়েছে। উদাহরণ:
require([
"dojo/_base/declare",
"dijit/_WidgetBase",
], function(declare, parser, ready, _WidgetBase){
declare("MyWidget", [_WidgetBase], {
field1: [],
field2: "",
function1: function(),
function2: function()
});
});
আমি দেখতে পেয়েছি যে ক্ষেত্রগুলি যখন []
তখন শুরু করা হয় তখন এটি সমস্ত মডেল অবজেক্ট দ্বারা ভাগ করা হবে। একটিতে পরিবর্তন করা সমস্ত অন্যকে প্রভাবিত করে।
এটি তাদের সাথে আরম্ভ করে না new Array()
। অবজেক্টের আরম্ভের জন্য একই ( {}
নতুন বনাম Object()
)
টিবিএইচ আমি নিশ্চিত নই যে আমরা যে কাঠামোটি ব্যবহার করছিলাম সে সম্পর্কে এটি কোনও সমস্যা কিনা ( দোজো )
চোখের দেখা পাওয়া ছাড়াও এর আরও অনেক কিছুই রয়েছে। সর্বাধিক অন্যান্য উত্তর সঠিক কিন্তু ..
new Array(n)
n
উপাদানগুলির জন্য স্থান পুনরায় স্থান দেওয়ার অনুমতি দেয়[1, 2, 3] || []
delete
বা না করেন)[1,,3]
সিনট্যাক্স না করেন)for ..
, forEach
,map
, ইত্যাদি)এটি সম্ভবত পুরানো ব্রাউজার সংস্করণ / ব্রাউজারগুলির ক্ষেত্রে নয়।
আমি দুটি নির্মাণের মধ্যে একটি পার্থক্য পেয়েছি যা আমাকে বেশ শক্ত করে তোলে।
ধরা যাক আমার আছে:
function MyClass(){
this.property1=[];
this.property2=new Array();
};
var MyObject1=new MyClass();
var MyObject2=new MyClass();
বাস্তব জীবনে, যদি আমি এটি করি:
MyObject1.property1.push('a');
MyObject1.property2.push('b');
MyObject2.property1.push('c');
MyObject2.property2.push('d');
আমি যা শেষ করি তা হ'ল:
MyObject1.property1=['a','c']
MyObject1.property2=['b']
MyObject2.property1=['a','c']
MyObject2.property2=['d']
ভাষার স্পেসিফিকেশন যা বলেছিল তা কী হবে তা আমি জানি না, তবে আমি যদি চাই যে আমার দুটি বস্তুর আমার অবজেক্টগুলিতে স্বতন্ত্র সম্পত্তি অ্যারে রয়েছে তবে আমাকে ব্যবহার করতে হবে new Array()
।
[]
এবং নির্মাতার সাথে প্রত্যাশা করে যা new Array()
ফলস্বরূপ প্রতি অ্যারেতে এক আইটেমের ফলস্বরূপ। উপরে বর্ণিত ফলাফলটি শেষ করতে অবশ্যই আপনার কোডে অন্য কিছু চলছে।
var property1static=[];
function MyClass(){ this.property1=property1static; this.property2=new Array(); };
অ্যারে কনস্ট্রাক্টর ব্যবহার করে কাঙ্ক্ষিত দৈর্ঘ্যের একটি নতুন অ্যারে তৈরি হয় এবং প্রতিটি সূচককে অপরিজ্ঞাত করে পপুলেট করে, ভেরিয়েবলের জন্য নির্ধারিত একটি অ্যারে সূচক তৈরি করে যা আপনি এটির জন্য তথ্য দেন।
[]
টোকেনটি:ARRAY_INIT
;new Array
টি টোকেন:NEW, IDENTIFIER
;new Array()
টোকেন:NEW, IDENTIFIER, CALL