2016.03 সম্পাদনা করুন: Object.observe
ক্রোম 50 এ অবচয় এবং সরানো হয়েছে
2014.05 সম্পাদনা করুন: Object.observe
Chrome 36 এ যুক্ত হয়েছিল
দেশীয় Object.observe
প্রয়োগের সাথে ক্রোম 36 শিপগুলি এখানে লাভ করা যেতে পারে:
myObj = {a: 1, b: 2};
Object.observe(myObj, function (changes){
console.log("Changes:");
console.log(changes);
debugger;
})
myObj.a = 42;
আপনি যদি এটি কেবল সাময়িকভাবে চান তবে আপনার ভেরিয়েবলের মধ্যে কলব্যাক সংরক্ষণ করা উচিত এবং Object.unobserve
কাজ শেষ হওয়ার পরে কল করা উচিত:
myObj = {a: 1, b: 2};
func = function() {debugger;}
Object.observe(myObj, func);
myObj.a = 42;
Object.unobserve(myObj, func);
myObj.a = 84;
মনে রাখবেন যে ব্যবহার করার সময় Object.observe
, যখন অ্যাসাইনমেন্টটি কোনও পরিবর্তন না করে , আপনাকে অবহিত করা হবে না, যেমন আপনি যদি লিখে থাকেন myObj.a = 1
।
কল স্ট্যাকটি দেখতে, আপনাকে ডিভাইসগুলিতে "অ্যাসিঙ্ক কল স্ট্যাক" বিকল্পটি সক্ষম করতে হবে:
আসল উত্তর (২০১২.০7):
console.watch
@ ক্যাটস্পফের পরামর্শ অনুসারে একটি স্কেচ:
var console = console || {}; // just in case
console.watch = function(oObj, sProp) {
var sPrivateProp = "$_"+sProp+"_$"; // to minimize the name clash risk
oObj[sPrivateProp] = oObj[sProp];
// overwrite with accessor
Object.defineProperty(oObj, sProp, {
get: function () {
return oObj[sPrivateProp];
},
set: function (value) {
//console.log("setting " + sProp + " to " + value);
debugger; // sets breakpoint
oObj[sPrivateProp] = value;
}
});
}
আবাহন:
console.watch(obj, "someProp");
সামঞ্জস্যের:
- ক্রোম 20 এ, আপনি রানটাইম এ সরাসরি এটি ডিভাইসে পেস্ট করতে পারেন!
- সম্পূর্ণতার জন্য: ফায়ারব্যাগ ১.১০ (ফায়ারফক্স ১৪) এ, আপনাকে এটি আপনার ওয়েবসাইটে ইনজেক্ট করতে হবে (উদাহরণস্বরূপ ফিডলারের মাধ্যমে যদি আপনি নিজে উত্সটি সম্পাদনা করতে না পারেন); দুর্ভাগ্যক্রমে, ফায়ারব্যাগ থেকে সংজ্ঞায়িত ফাংশনগুলি ভাঙ্গা মনে হয় না
debugger
(বা এটি কনফিগারেশনের বিষয়? দয়া করে আমাকে তখন সংশোধন করুন), তবে console.log
কাজ করে।
সম্পাদনা:
নোট করুন যে ফায়ারফক্সের console.watch
অ-মানকতার কারণে ফায়ারফক্সে ইতিমধ্যে উপস্থিত রয়েছে Object.watch
। ফায়ারফক্সে, আপনি স্থানীয়ভাবে পরিবর্তনের জন্য দেখতে পারেন:
>>> var obj = { foo: 42 }
>>> obj.watch('foo', function() { console.log('changed') })
>>> obj.foo = 69
changed
69
তবে এটি শীঘ্রই (2017 সালের শেষের দিকে) সরানো হবে ।