Ich habe ein neues Objekt erstellt, und in diesem Objekt habe ich mehrere Objektvariablen, aber das Ereignis (optional) Objekt wird nicht korrekt festgelegt. Es wird als undefiniert angezeigt, wenn es in der Build-Funktion auf der Registerkarte Event aufgerufen wird, und ich vermute, dass es etwas damit zu tun hat, dass es möglicherweise asynchron ist. Unten sind mein Objekt und mein Aufruf und auch was ich bekomme, wenn ich auf das Objekt referenziere.JavaScript Objektkonstruktor Einstellung als undefined
Ich kann nicht herausfinden, warum es genau so undefiniert kommt, wie es gesetzt wird, bevor die Build-Funktion überhaupt aufgerufen wird.
UPDATE: Diese Geige hat den genauen Code als aufgerufen. https://jsfiddle.net/trickell/Leg1gqkz/2/
Das Problem liegt in der Methode checkEvents().
var Wizard = function(id, events) {
this.activeTab = '';
this.prevTab = '';
this.nextTab = '';
this.events = (events) ? events : {}; // Optional events object. User may define events based on tab. (ex. "tabName" : function(){})
console.log(this.events); // Returns object with no keys
this.build(id);
return this;
}
Wizard.prototype.build = function(id){
var tab = id,
events = this.events;
// **** This is what's showing up as undefined!!! *****/
console.log(events.cardInfo);
}
(function($, undefined){
var wiz = new Wizard($('#package_wizard'),
{
cardInfo : function() {
alert('hello world');
}
});
})(jQuery);
geschrieben haben, sollte ich nicht genau es so zu definieren. Ich verwende den $ .extend (Wizard.prototype, {build: function() {}}); Methode von jquery. – jamadri
@jamadri Dann zeigen Sie Ihren genauen Code. Wie Sie sehen können, war das in diesem Fall das Problem. Wenn du etwas anderes tust und dies nicht löst, muss ich diesen Code sehen. –
Ich werde dies mit einer Fiddle-URL mit dem gesamten Widget ändern, das ich erstellt habe. Vielleicht wird es etwas Licht auf genau das, was passiert, werfen xD – jamadri