Der folgende Code läuft gut:Prototypfunktion nicht
function Button(tagName) {
var button;
if (tagName) button = document.createElement(tagName);
else button = document.createElement(div);
button.innerHTML = 'Track Order';
button.applyJsonProperties = function(jsonProperties){
if(jsonProperties){
for(var cssAttribute in jsonProperties){
this.style[cssAttribute] = jsonProperties[cssAttribute];
}
}
}
return button;
}
Der folgende Code erzeugt einen Fehler
function Button(tagName) {
var button;
if (tagName) button = document.createElement(tagName);
else button = document.createElement(div);
button.innerHTML = 'Track Order';
return button;
}
Button.prototype.applyJsonProperties = function(jsonProperties){
if(jsonProperties){
for(var cssAttribute in jsonProperties){
this.style[cssAttribute] = jsonProperties[cssAttribute];
}
}
}
var divButton = new Button('div');
var props = { "color" : "blue" }
divButton.applyJsonProperties(props); //returns undefined function
'divButton.applyjSonProperties (Stützen)' falsche Methodennamen –
das Objekt aus der zurück Die * Button * -Funktion, wenn sie als Konstruktor aufgerufen wird, ist keine Instanz von * Button *, dh sie erbt nicht von * Button.prototype *, weil sie ein DOM Bu zurückgibt tton Element, nicht das Konstruktor * this *. – RobG
Sie fehlen Zitate um 'div' hier:' document.createElement (div) '. Sie könnten den Code so vereinfachen, dass er 'tagName = tagName || lautet 'div'; 'in der ersten Zeile. – Barmar