Stworzyłem więc funkcję jak ten,utworzyć funkcję w javascript z niestandardowego prototypu
var functionName = function(arg1) { //code logic here; }
Jednocześnie, muszę tę funkcję, aby pracować jako przedmiot. Tak naprawdę nie zapisuje niczego, ale dane będą dostępne z innego obiektu.
var myObj = new Object();
myObj.x = 3;
myObj.y = 4;
Więc kiedy odejdę, functionName.x
powinien powrócić myObj.x
. Obiekt myObj
jest utrzymywany w innym miejscu i nie mam nad nim żadnej kontroli.
To jak ja obecnie realizowane go
functionName.__proto__ = myObj;
To działa dobrze. Ale __proto__
jest już przestarzałe i chciałbym zobaczyć, czy istnieje inny bezpieczny sposób to zrobić. Pomyślałem o nadpisaniu Function.prototype
, ale to nie działa.
Dlaczego nie można po prostu przechowywać w ** functionName ** tylko odniesienie do myObj ** **? – Kryz
@Kryz nie jestem pewien Rozumiem, nie mogę zrobić functionName = myObj, bo to zastąpi definicję funkcji.Teraz funkcja functionName jest dostępna jako functionName() i functionName.x, więc muszę zachować to zachowanie –
Uwaga boczna: myObj powinien prawdopodobnie pochodzić od Function.prototype, więc nadal masz dostęp do functionName.bind, itp. (Oczywiście, nie ma to nic wspólnego z pierwotnym problemem). – Marc