2016-10-03 1 views
-2

Wie kann ich einen Prototyp auf die Konstruktorfunktion anwenden (in eckigen Klammern). Ich möchte die Punktnotation nicht verwenden, weil sie die Variable nicht auswertet, sondern den Variablennamen zurückgibt und ich möchte, dass der Prototyp dynamischer wird. Unten ist, was ich versuche zu erreichen, aber ich kann es nicht zur Arbeit bringen.Prototyp mit quadratischen Klammern (nur Vanilla JS-Lösung)

var prototyper = function(constructor_name, prototype_name, data) 
{ 
    main[constructor_name][__prototype__][prototype_name] = new Function(data); 
} 

Prototyper ("Klassifizierung", "alert_classification", "alert (this.classification)");

+1

Sie sollten 'neue Function' verwenden fast nie mischen. – Bergi

+0

Sie scheinen '__prototype__ ===" prototype "' zu haben, oder einfach 'main [...] .prototype [...] = ...' – Bergi

+0

"* Ich möchte keine Punktnotation * verwenden" - können Sie das näher erläutern? Es scheint genau das zu sein, was du willst. Und Sie könnten Ihre Funktion dazu bringen, damit zu arbeiten, oder? – Bergi

Antwort

1

Sie möchten Klammernotation für die Variableneigenschaften (…[constructor_name] und …[prototype_name]) aber Punktnotation für die konstante Eigenschaft ….prototype. Sie müssen sie in

function prototyper(constructor_name, method_name, fn) { 
    main[constructor_name].prototype[method_name] = fn; 
} 

(jsfiddle demo)

Verwandte Themen