পরবর্তীকর্মগুলি কি কেবল কাস্টম কনস্ট্রাক্টর (যেমন, বার্ড বার্ড 1 = নতুন পাখি ();) দ্বারা তৈরি অ-প্রিমিটিভ ফাংশন অবজেক্টগুলিকে বোঝায়?
:)
পরবর্তীকর্মগুলি কি কেবল কাস্টম কনস্ট্রাক্টর (যেমন, বার্ড বার্ড 1 = নতুন পাখি ();) দ্বারা তৈরি অ-প্রিমিটিভ ফাংশন অবজেক্টগুলিকে বোঝায়?
:)
উত্তর:
উভয় পদ ECMAScript নির্দিষ্টকরণে সংজ্ঞায়িত করা হয়েছে:
নেটিভ অবজেক্ট
একটি ইসমাস্ক্রিপ্ট বাস্তবায়নে আপত্তি যার শব্দার্থকগুলি হোস্ট পরিবেশের পরিবর্তে এই স্পেসিফিকেশন দ্বারা সম্পূর্ণ সংজ্ঞায়িত defined
দ্রষ্টব্য স্ট্যান্ডার্ড নেটিভ অবজেক্টস এই স্পেসিফিকেশন মধ্যে সংজ্ঞায়িত করা হয়। কিছু দেশীয় বস্তু অন্তর্নির্মিত হয়; অন্যরা ECMAScript প্রোগ্রামটি কার্যকর করার সময় নির্মিত হতে পারে।
সূত্র: http://es5.github.com/#x4.3.6
হোস্ট অবজেক্ট
ECMAScript কার্যকর করার পরিবেশ সম্পূর্ণ করতে হোস্ট পরিবেশ দ্বারা সরবরাহিত বস্তু।
দ্রষ্টব্য যে কোনও বস্তু নেটিভ নয় সেগুলি একটি হোস্ট অবজেক্ট।
সূত্র: http://es5.github.com/#x4.3.8
কয়েকটি উদাহরণ:
দেশীয় বস্তু: Object(কন্সট্রাকটর), Date, Math, parseInt, eval, মত স্ট্রিং পদ্ধতি indexOfএবং replace, এরে পদ্ধতি, ...
হোস্ট বস্তু (ব্রাউজার পরিবেশ অভিমানী): window, document, location, history, XMLHttpRequest, setTimeout, getElementsByTagName, querySelectorAll, ...
host object বর্ণিত সংজ্ঞাটি দেখুন ।
'Object'বা Object.prototype.toStringহিসাবে উপস্থাপিত হবে '[object Object]'।
Birdকোনও ব্যবহারকারী সংজ্ঞায়িত ফাংশন হয় তবে এর শব্দার্থবিজ্ঞানগুলি ES স্পেসিফিকেশন দ্বারা "সম্পূর্ণরূপে সংজ্ঞায়িত" হয় (কীভাবে ফাংশন অবজেক্টগুলি কাজ করে, কীভাবে তারা তৈরি হয়, কার্যকর হয়, newঅপারেটরের সাথে ব্যবহৃত হয় ইত্যাদি ইত্যাদি) এটি একটি নেটিভ অবজেক্ট ... আমি একটি উত্তর ফেলে দিতে পারি ...
এটি আরও স্পষ্ট হয় যদি আমরা তিন ধরণের বস্তুর মধ্যে পার্থক্য করি:
বিল্ট-ইন অবজেক্টের : String, Math, RegExp, Object, Functionইত্যাদি - কোর পূর্বনির্ধারিত জাভাস্ক্রিপ্ট মধ্যে সবসময় পাওয়া বস্তু। ECMAScript বিশেষে সংজ্ঞায়িত।
হোস্ট অবজেক্টস : যেমন window,, XmlHttpRequestডিওএম নোড এবং অন্যান্য, যেমন ব্রাউজার পরিবেশের দ্বারা সরবরাহ করা হয় objects এগুলি অন্তর্নির্মিত বস্তু থেকে পৃথক কারণ সমস্ত পরিবেশের একই হোস্ট বস্তু থাকবে না। যদি জাভাস্ক্রিপ্ট ব্রাউজারের বাইরে চলে যায়, উদাহরণস্বরূপ সার্ভার সাইড স্ক্রিপ্টিং ভাষা হিসাবে নোড.জেএস এর মতো, বিভিন্ন হোস্ট অবজেক্টগুলি উপলভ্য হবে।
ব্যবহারকারী অবজেক্টস : জাভাস্ক্রিপ্ট কোডে সংজ্ঞায়িত অবজেক্টস। সুতরাং আপনার উদাহরণে 'পাখি' একটি ব্যবহারকারী অবজেক্ট হবে।
জাভাস্ক্রিপ্ট স্পেসিফিক গ্রুপগুলি অন্তর্নির্মিত অবজেক্ট এবং ব্যবহারকারী অবজেক্টগুলিকে একসাথে নেটিভ অবজেক্ট হিসাবে তৈরি করে । এটি "নেটিভ" শব্দের একটি অপ্রচলিত ব্যবহার, যেহেতু ব্যবহারকারীর অবজেক্টগুলি স্পষ্টতই জাভাস্ক্রিপ্টে প্রয়োগ করা হয়েছে যখন বিল্ট-ইনগুলি সম্ভবত হুডের অধীনে ভিন্ন ভাষায় প্রয়োগ করা হয় ঠিক যেমন হোস্ট অবজেক্টগুলি হবে would তবে জাভাস্ক্রিপ্ট স্পেসের দৃষ্টিকোণ থেকে, বিল্টইনস এবং ব্যবহারকারী উভয় বস্তুই জাভাস্ক্রিপ্টের স্থানীয় কারণ এটি জাভাস্ক্রিপ্ট স্পেসে সংজ্ঞায়িত করা হয়েছে, যদিও হোস্ট অবজেক্টগুলি নয়।
অনুমান সম্পর্কে আমার বোঝার বিষয় এখানে।
এই:
var bird = new Bird();
... একটি নেটিভ অবজেক্টের ফলাফল যা newঅপারেটরটি ব্যবহার করে তৈরি করা হয়েছিল ।
নেটিভ অবজেক্টগুলির নিম্নলিখিতগুলির মধ্যে একটির অভ্যন্তরীণ [[শ্রেণি]] সম্পত্তি রয়েছে:
"আর্গুমেন্ট", "এরে", "বুলিয়ান", "তারিখ", "ত্রুটি", "ফাংশন", "তাদেরকে JSON", "গণিত", "নম্বর", "অবজেক্ট", "RegExp", এবং "STRING" ।
আপনার জন্য bird1এটি হবে:
"অবজেক্ট"
আপনি যদি কোনও ফাংশন তৈরি করেন ঠিক তেমন:
function my_func() {
// ...
}
... my_funcইসমাস্ক্রিপ্টে সংজ্ঞায়িত করা হয়নি, তবে এটি এখনও অভ্যন্তরীণ [[শ্রেণি]] সহ একটি নেটিভ অবজেক্ট:
"ফাংশন"
হোস্ট অবজেক্ট হ'ল একটি পরিবেশ যা পরিবেশ দ্বারা সরবরাহ করা হয় সেই পরিবেশের নির্দিষ্ট কোনও উদ্দেশ্য নির্দিষ্ট করার জন্য নির্দিষ্টকরণ দ্বারা নির্দিষ্ট করা হয় না।
উদাহরণ স্বরূপ:
var divs = document.getElementsByTagName('div')
রেফারেন্স করা অবজেক্টটি divsহ'ল নোডলিস্ট , যা পরিবেশে এমনভাবে সংহত করা হয় যে এটি নিয়মিত জাভাস্ক্রিপ্ট অবজেক্টের মতো মনে হয়, তবুও স্পেসিফিকেশন দ্বারা এটি কোথাও সংজ্ঞায়িত হয়নি।
এর অভ্যন্তরীণ [[শ্রেণি]] সম্পত্তি হ'ল:
"নোডলিস্ট"
এটি বাস্তবায়নের ডিজাইনারকে পরিবেশের নির্দিষ্ট প্রয়োজন অনুসারে বাস্তবায়নের জন্য কিছুটা নমনীয়তা সরবরাহ করে।
হোস্ট অবজেক্টগুলির প্রয়োজনীয়তা রয়েছে যা পুরো অনুমানের মধ্যে সংজ্ঞায়িত করা হয়।
birdএবং Birdহয় নেটিভ বস্তু , তারা একটি ব্যবহারকারী সংজ্ঞায়িত কার্যকারিতা (হয় Bird), এবং একটি বস্তু ( bird) একটি কন্সট্রাকটর যেমন ফাংশনের ব্যবহার দ্বারা নির্মিত, সমস্ত এই শব্দার্থবিদ্যা বৈশিষ্ট উপর সংজ্ঞায়িত করা হয়। হোস্ট বস্তু সম্পর্কে খুব বেশি নির্ভর করবেন না [[Class]]অভ্যন্তরীণ সম্পত্তি, উদাহরণস্বরূপ window.alertহয়েছে "Function"তার মান যেমন [[Class]]সম্পত্তি প্রায় সব বাস্তবায়নের, এটা হয়েছে ইন্টারনেট উপর "Object", এবং এটি এখনও একটি হোস্ট অবজেক্ট ...
[[Class]]। বরং প্রয়োগকারীরা কীভাবে বিভিন্ন ধরণের অবজেক্টের ব্যাখ্যা করেছেন তার একটি স্পষ্ট ঝলক হিসাবে এটি ব্যবহার করার জন্য। আমি তখন window.alertএকটি অভ্যন্তরীণ থাকার [[Class]]এর "Function"ইএস 5 লঙ্ঘন হতে বলে মনে করেন?
divs/NodeListএকটি পাই object। আমি অনুমান করছি যে আমি এটি এখনও বুঝতে পারি না, তবে এটি কী কোনও দেশীয় বস্তু তৈরি করবে না?
windowসমস্ত হোস্ট অবজেক্টগুলিতে সবকিছু পাওয়া
var bird1 = new Bird();নেটিভ বা হোস্ট অবজেক্ট কিনা তা এই প্রশ্নের একটি দৃ conv় উত্তর দেখতে পেল না । ধরে নেওয়া পাখি একটি ব্যবহারকারীর সংজ্ঞায়িত ফাংশন, জাভাস্ক্রিপ্ট বাস্তবায়নের মাধ্যমে http://es5.github.io/#x13.2 অনুযায়ী দেশি অ-অন্তর্নির্মিত অবজেক্ট তৈরি করা হবে । বিপরীতে, দেশীয় অন্তর্নির্মিতজাভাস্ক্রিপ্ট প্রোগ্রাম শুরুর পর থেকে অবজেক্টগুলি উপস্থিত থাকবে (যেমন অবজেক্ট এবং আরও অনেকগুলি)। নেটিভ অবজেক্ট এবং হোস্ট অবজেক্টের মধ্যে পার্থক্য হ'ল পূর্ববর্তীটি জাভাস্ক্রিপ্ট বাস্তবায়ন দ্বারা তৈরি করা হয় এবং পরবর্তীটি হোস্ট পরিবেশ দ্বারা সরবরাহ করা হয়। ফলস্বরূপ হোস্ট অবজেক্টের অভ্যন্তরীণ [[শ্রেণি]] সম্পত্তি বিল্ট-ইন অবজেক্ট (যেমন "আর্গুমেন্টস", "অ্যারে", "বুলিয়ান", "তারিখ", "ত্রুটি", "ফাংশন", "" এর চেয়ে পৃথক হতে পারে) জেএসওএন "," ম্যাথ "," সংখ্যা "," অবজেক্ট "," রেজিপ্যাক্স ", এবং" স্ট্রিং ")।
এছাড়াও, উল্লেখযোগ্যভাবে লক্ষণীয় যে ECMA6 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf আর পরিভাষা নেটিভ এবং হোস্ট অবজেক্ট ব্যবহার করে না। পরিবর্তে, এটি তাদের উদ্দেশ্যমূলক আচরণের আরও স্পষ্ট ব্যাখ্যা সহ অবজেক্টের ধরণের নীচে সংজ্ঞায়িত করে।
4.3.6 সাধারণ অবজেক্ট
এমন অবজেক্টের যা আবশ্যক অভ্যন্তরীণ পদ্ধতির জন্য ডিফল্ট আচরণ যা অবশ্যই সমস্ত বস্তুর দ্বারা সমর্থিত
৪.৩.। বহিরাগত বস্তু
এক বা একাধিক প্রয়োজনীয় অভ্যন্তরীণ পদ্ধতির জন্য ডিফল্ট আচরণ নেই এমন অবজেক্টটি যা অবশ্যই সমস্ত বস্তুর দ্বারা সমর্থিত হয় নোট দ্রষ্টব্য: যে কোনও বস্তু কোনও সাধারণ অবজেক্ট নয় এটি একটি বহিরাগত বস্তু।
4.3.8 স্ট্যান্ডার্ড অবজেক্ট
যার শব্দার্থবিজ্ঞান এই স্পেসিফিকেশন দ্বারা সংজ্ঞায়িত করা হয়
৪.৩.৯ বিল্ট-ইন অবজেক্ট
কোনও ইসিএমএসক্রিপ্ট বাস্তবায়ন দ্বারা অবজেক্ট নির্দিষ্ট এবং সরবরাহ করা হয়েছে
হোস্ট অবজেক্ট সম্পর্কিত অন্যান্য উত্তর ছাড়াও।
হোস্ট অবজেক্টগুলি একটি পরিবেশের জন্য নির্দিষ্ট। সুতরাং ব্রাউজারের হোস্ট অবজেক্টের পাশেই নোডেজের জন্য নির্দিষ্ট বস্তু রয়েছে।
উদাহরণের খাতিরে, প্রথমে জাভাস্ক্রিপ্টে সংজ্ঞায়িত স্ট্যান্ডার্ড অবজেক্টগুলি দিয়ে শুরু করুন। তারপরে ব্রাউজার / ডিওএম এর সাধারণ বিষয়গুলি। নোডের নিজস্ব অবজেক্ট রয়েছে।
স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট অন্তর্নির্মিত বস্তুর উদাহরণ:
হোস্ট অবজেক্টস ডকুমেন্ট অবজেক্ট মডেল উদাহরণসমূহ:
নোড.জেজে হোস্ট অবজেক্টস :
তিনটি বিষয় বিবেচনা করে: হোস্ট, নেটিভ, কাস্টম।
হোস্ট অবজেক্টগুলি পরিবেশ দ্বারা নির্মিত এবং পরিবেশ নির্দিষ্ট। সেরা পরিচিত পরিবেশটি ওয়েব ব্রাউজার হতে পারে তবে এটি অন্য প্ল্যাটফর্ম হতে পারে। ওয়েব ব্রাউজারে তৈরি হোস্ট অবজেক্টগুলি উইন্ডো অবজেক্ট বা ডকুমেন্ট হতে পারে। সাধারণত একটি ব্রাউজার জাভাস্ক্রিপ্টে ডকুমেন্ট অবজেক্ট মডেলকে প্রতিবিম্বিত করতে হোস্ট অবজেক্টগুলি তৈরি করতে একটি API ব্যবহার করে। (ওয়েব ব্রাউজারের বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিন রয়েছে যা এটি করে) একটি ব্রাউজারে পৃষ্ঠাটি রেন্ডার হওয়ার সাথে সাথে একটি হোস্ট অবজেক্ট স্বয়ংক্রিয়ভাবে তৈরি হয়।
জাভাস্ক্রিপ্টের পূর্বনির্ধারিত শ্রেণীর ব্যবহার করে বিকাশকারী একটি নেটিভ অবজেক্ট তৈরি করেন। নেটিভ অবজেক্টগুলি আপনার লিখিত স্ক্রিপ্টে রয়েছে।
এর চেয়ে বিকাশকারী একটি কাস্টম (পূর্বনির্ধারিত বা আংশিক পূর্বনির্ধারিত নয়) শ্রেণি থেকে কাস্টম অবজেক্ট তৈরি করে।
নেটিভ অবজেক্টস এমন বস্তু যা চশমাগুলিকে মেনে চলা, অর্থাত্ "স্ট্যান্ডার্ড অবজেক্টস"।
হোস্ট অবজেক্টস হ'ল বস্তু যা ব্রাউজার (বা নোডের মতো অন্যান্য রানটাইম পরিবেশ) সরবরাহ করে।
বেশিরভাগ হোস্ট অবজেক্টগুলি নেটিভ অবজেক্টস এবং আপনি যখনই কোনও কিছু ব্যবহার করে তাত্ক্ষণিকভাবে ব্যবহার করেন তখন আপনি new99.99% নিশ্চিত হতে পারবেন যে এটি কোনও দেশীয় অবজেক্ট, যদি না আপনি অদ্ভুত হোস্ট অবজেক্টের সাথে ঘাড়েচুলি করেন।
আইই (এবং অন্যান্য পুরানো ব্রাউজারগুলি?) তে খুব উদ্ভট বস্তুর উপস্থিতির কারণে এই ধারণাটি প্রবর্তিত হয়েছে । উদাহরণ স্বরূপ:
typeof document.all == "undefined"; // true
document.all.myElementId; // object
এটি দেখার সময় প্রত্যেকে সম্মত হবে যে document.allএটি স্পষ্টতই "অ-মানক", এবং এইভাবে একটি অ-নেটিভ হোস্ট অবজেক্ট।
তাহলে কেন দেশীয় বস্তুগুলিকে প্রথম স্থানে স্ট্যান্ডার্ড অবজেক্ট বলা হবে না? সাধারণ: সর্বোপরি, স্ট্যান্ডার্ড (!) নথিটিও দেশি-বিদেশী অবজেক্ট সম্পর্কে কথা বলে এবং সেগুলি মানহীন বলে অভিহিত করে বলা কল্পনা করার ফলে প্যারাডক্স বাড়ে।
আবার:
এটি ওভারকিল হতে পারে, তবে সরলতার জন্য একটি নেটিজ অবজেক্ট এমনটি বিদ্যমান যা কোনও পরিবেশে ECMAScript কমপ্লায়েন্ট ইঞ্জিন প্রয়োগ করে তা ব্যবহারযোগ্য। এটি সাধারণত (তবে সর্বদা নয়) একটি ব্রাউজার হয়।
সুতরাং, আপনার ইন্টারনেট এক্সপ্লোরার বা আপনার গুগল ক্রোম উদাহরণস্বরূপ স্ট্রিং অবজেক্টটি আপনাকে উপলভ্য করে না। আপনি স্ট্রিং অবজেক্টটি ব্যবহার করতে পারবেন কারণ এটি জাভাস্ক্রিপ্ট ভাষাতেই "দেশীয়" (অন্তর্নির্মিত)।
তবে আপনি যদি পপ-আপ উইন্ডোটি তৈরি করতে চান তবে আপনার উইন্ডো অবজেক্টটি ব্যবহার করতে হবে। উইন্ডো অবজেক্টটি স্বয়ং ব্রাউজার সফ্টওয়্যার দ্বারা সরবরাহ করা হয়েছে, সুতরাং এটি জাভাস্ক্রিপ্টের স্থানীয় নয়, তবে এটি "ব্রাউজার অবজেক্ট মডেল" বা বিওমের একটি অংশ।