এই প্রশ্নটি jQuery এর জন্য নির্দিষ্ট নয়, তবে সাধারণভাবে জাভাস্ক্রিপ্টের জন্য নির্দিষ্ট specific মূল সমস্যাটি হ'ল এমবেডড ফাংশনগুলিতে কোনও পরিবর্তনশীল "চ্যানেল" কীভাবে করা যায়। এটি উদাহরণ:
var abc = 1; // we want to use this variable in embedded functions
function xyz(){
console.log(abc); // it is available here!
function qwe(){
console.log(abc); // it is available here too!
}
...
};
এই কৌশলটি ক্লোজার ব্যবহারের উপর নির্ভর করে। তবে এটি এর সাথে কাজ করে না this
কারণ this
একটি সিউডো ভেরিয়েবল যা স্কোপ থেকে স্কোপে পরিবর্তনশীল হতে পারে:
// we want to use "this" variable in embedded functions
function xyz(){
// "this" is different here!
console.log(this); // not what we wanted!
function qwe(){
// "this" is different here too!
console.log(this); // not what we wanted!
}
...
};
আমরা কি করতে পারি? এটি কিছু ভেরিয়েবলের জন্য বরাদ্দ করুন এবং উপনামের মাধ্যমে এটি ব্যবহার করুন:
var abc = this; // we want to use this variable in embedded functions
function xyz(){
// "this" is different here! --- but we don't care!
console.log(abc); // now it is the right object!
function qwe(){
// "this" is different here too! --- but we don't care!
console.log(abc); // it is the right object here too!
}
...
};
this
এই ক্ষেত্রে অনন্য নয়: arguments
অন্য সিউডো ভেরিয়েবল যা একইভাবে আচরণ করা উচিত - আলিয়াজ করে।
self
কোনওwindow.self
বিষয় আছে বলে আপনার এড়ানো উচিত এবং যদি আপনি নিজেরself
ভেরি ঘোষণা করতে ভুলে যান (উদাহরণস্বরূপ কিছু কোড ঘোরার সময়) আপনি দুর্ঘটনাক্রমে এটি ব্যবহার করতে পারেন । এটি স্পট / ডিবাগের জন্য বিরক্তিকর হতে পারে। এর মতো কিছু ব্যবহার করা ভাল_this
।