Birçok nesne ve işlevlerden (nesne yöntemleri) oluşan bir javascript uygulaması geliştiriyorum. Uygulamanın yaşam döngüsünde birçok olayı günlüğe kaydedebilmek istiyorum. Benim sorunum, logger'ın içinde hangi fonksiyonun log girişini çağırdığını bilmek istiyorum, böylece bu verileri log mesajıyla birlikte kaydedebilirim. Bu, her fonksiyonun bir şekilde kendini referans göstermesi gerektiği anlamına gelir, bu yüzden bu referansı kaydediciye iletebilirim. Javascript sıkı modunu kullanıyorum, bu yüzden işlev içinde arguments.callee
kullanılmasına izin verilmiyor.Bir işlev kendi uygulamasından nasıl referans alınır?
Çalıştırabileceğiniz çok basitleştirilmiş bir kod örneği. Ben sadece basitlik için logger'ım yerine alert
kullanıyorum. İlk uyarısında
(function(){
"use strict";
window.myObject = {
id : 'myObject',
myFunc : function(){
alert(this.id); // myObject
alert(this.myFunc.id); // myFunc - I don't want to do this. I want something generic for all functions under any object
alert('???') // myFunc
alert(arguments.callee.id); // Will throw an error because arguments.callee in not allowed in strict mode
}
}
myObject.myFunc.id = 'myFunc';
myObject.myFunc();
})();
- -
this
ikinci Ben uyarısındamyFunc
- için
myObject
değil ilişkin - Ben I olarak, yapmak istemiyorum Adından tarafından fonksiyonunu başvurulan Bir işlevi kendi uygulamasından referans göstermenin genel bir yolunu arıyorum. - Üçüncü uyarı - fikirlerinizi açık.
- Dördüncü uyarı -
"use stict";
kullanmamış olsaydım çalışırdı. Daha iyi performans sağladığından ve iyi kodlama uygulaması oluşturduğundan katı modda kalmak istiyorum.
Herhangi bir girdi takdir edilecektir.
siz "Katı modda" ile ilgili bilgi sahibi değilseniz, bu konuda okumak iyi bir yerdir: JavaScript Strict Mode
Teşekkürler! Bunlar güzel çözümler :) –