Closure Works In Constructor But Not In Prototype?
Jan 6, 2011
I'm not sure why this: Code: console.log(instance2.getAnotherKey()()); returns Object { a = "a" } when I clearly reassigned the value of the a property. Reassigning the property caused change in this line:
Code:
ref.a = 'abc'; console.log(inst.getZ()); //Object {a="abc"} So why does it work when you call an instance method in the constructor (e.g. this.getZ()) but doesn't work when you call the instance method in prototype?
what's the point of using x.constructor.prototype? (highlighted in red) why not directly use x.prototype. classname to check whether 'classname' property is in this class?
I have a class constructor, and after the constructor a prototype method associated with that class. I'm trying to call that method from within the class constructor, but it causes an error, indicating that the method is not a property of the class.Is it not possible to access prototype methods from within the constructor? If it IS possible, how do I do it?
I have a requirement to override the constructor of a javascript class. I have to execute the current constructor code and then call a javascript method. Basically, I need to execute a javascript method whenever an object of that particular class is created in addition to whatever is being done now. I do not want to copy and paste the current constructor code and override the initcomponent method. I am looking for an alternative for that.
I had read from books that the constructor property of object is inherited from its prototype. And the prototype can be changed dynamically. New property can be added to or deleted from object even it was created before the prototype change.
How would I go about copying all the prototype functions AND the constructor from one object into another object, and then call them?
I know I can use this.example.call(this), but that's not an acceptable solution. I want to deploy this style over dozens, potentially hundreds of objects.
I'm using a fork of osC for an ecommerce system. It has an integrated smarty template. In the admin section, when adding products there's a section with three tabs: Main Image, Extra Images, and Media
This section acts like AJAX, but I'm not sure if it is. The media pulls actions from two .js files: prototype.js and media.js So, I'm guessing it's Prototype? The problem is adding media works fine in firefox, but only shows a "Please Wait..." when used in IE, Google Chrome, and Safari The odd thing is when it's loading in Firefox, it says "Initializing.." (Instead of Please Wait..) then loads the media functions allowing me to add sound to my products. If it's php I can do fine, but I don't know much about JS.
The reason that it works well in firefox, makes me suspect the code is right, but missing something.
I'm using the code below for the "launch page" to open a JS window and know when it has been closed, and than execute some other code that should be run after the pop-up closes.
javascript Code:
This works, and does exactly what I want. Do any of you JS experts see any reason for concern? Anything that makes it suboptimal?
I would like to set a flag using a closure so that the internal value of that closure is preserved for me to retrieve it when different events occur. It is one of those times where lack of block scope will stop me from doing what I want to do unless I can set a boolean and preserve its value in a function.
I am currently strungling with the fact that I want to control the browser closure. In fact, I have a webbased application in which I use a wizard. Ones the wizard starts, a lock is set on specific objects in the db. On all pages of the wizard, the user get the possibility to exit the wizard by clicking on a custom "Exit" button. That way, I know that the user has left the wizard and that way I can unlock the locked objects in the db again.
So far, so good. But users are used to close browser windows by clicking on the "X" in the titlebar. If they close a window that way, the locks aren't unset and no other user may start the wizard again. If I should know that he had clicked on the "X", I could unlock the objects.
I have searched a lot on the net but all results aren't sufficient for me.
Some solutions which don't work:
1) onunload event: =Also called when the window is refreshed or forwarded.
2) "titlebar = no" property while opening the first page of the wizard, is not working (the titlebar is still enabled). And even then, the users can close the window by clicking CRL-F4. This key combination isn't disabled by the "hotkeys = no" property.
Note: if the client's pc crashes or if the user kills the wizard process via the task manager (exceptional cases), they have to call maintenance to reset the locks. This is a requirement, defined by bussiness.
In my UI framework, I have an event handler - just like many frameworks do. My handler is a static object, and contains methods to take care of things like mouse events, etc. However, upon adding a method to handle onfocus today, I ran into a very odd problem in Firefox. I've put together an example page that generates the error:
According to ECMAScript, the root of the prototype chain is Object.Prototype. Each object has an internal property [[Prototype]] that could be another object or NULL.... However, it also says that every function has the Function prototype object: Function.Prototype, it confused me, because a function is an object, for a function object, what is its function prototype and object prototype..For example:
var x = function (n) {return n+1;};
what is the relationships of x, Object.Prototype and Function.Prototype
I am trying to get to the bottom of javascript object, prototypes etc. I have a fairly good grasp of it, but I get confused the closer I get to the base object.prototype. FIrst of all, I was under the impression that all objects descend directly from Object. But some objects (like Array) seem to inherit properties and methods from the function.prototype. So does this mean that the chain is like this:
object -- function -- array Second, I noticed (on the mozilla javascript reference site that object.prototype inherits properties and methods from function.prototype and vice versa!? How can this be? I must be missing something important about understanding the chain?
when a user clicks on a link, a new window opens. what I want to do is that if the user closes that popup but click on that same link again, the window should open..
Code: <script language="javascript"> var winOpen = "";
I'm using the apycom jquery menu style 1 (dim grey)URL..It's a great looking menu but does anyone know how to 'delay' the dropdown menu closure when your mouse moves off of it?I can change the speed of the menu opening and closing, but not can't find a way to delay.It's too easy for visitors to 'slip' off the menu and if you have two child menu's, it get frustraing if you drill down to the secon child menu and slip off. You have to go back to the top menu and start again.
I'm trying to group some existing top-level functions inside a closure (to avoid polluting the global namespace) but I'm not quite getting it to work. First, all the JS works outside my anonymous function, but once I put it in the anonymous function I get an error of "crossfade is not defined". I'm not quite getting why the the setInterval/crossfade works outside the anonymous function but not inside. Anything inside start() should be able to see vars/functions outside start() and it should all be protected in the closure created by the top-level anonymous function? I'm not trying to access anything *within* crossfade(), I'm just trying to execute it.
Code: (function($) { //vars up here that internal functions can access //also using some jquery inside here, so using $ function crossfade() { //body here } //other functions function start() { //body here cInterval = setInterval('crossfade()', 5000); } })(jQuery);
I am trying to figure out what the constructors for the Image object are.
I have figured out that in IE and Mozilla, the Image object, and the HTMLImageElement are the same, from a property perspective at least, but what is the constructor for the Image object?
I know that I can call the following constructors, but are there others?
So our companies cms is quite javascript heavy. In an attempt to make it leaner I'm attempted to put all of our javascripts into as few files as possible, and compressed. For our form validation I've using the qforms library which consists of many files. Putting them into 1 file with all the other scripts and I receive the error "Field is not a constructor" Here's the piece of code creating the error.
Code: this[field] = new Field(o, field, this._name);
Can you pass an array reference to a constructor? I don't know if it's because the syntax is screwy or it's impossible, but the following doesn't work.
// row constructor with array called fields function RowObject(fields) { this.fields=new Array(); this.fields=fields; }
I need to detect the "name" of the constructor of an object. For example, myArray.constructor === Array is true, but I want something where that === 'Array' is true. I've heard of Object.constructor.name, but it's not widely compatible. (preferably without involving regular expressions)?
Now, the code worked fine in both script. (i.e., no more error.) So far as I can tell, the only differences between the first and next version of Book.js are the comments and the whitespace. Am I missing something? Can the comments or whitespace somehow effect the logic with which this code has been executing? If I get an error like this again, is there an easier/better way to fix it than to essentially retype the code?
How to extend the constructor for the date object of the javasccript so that whenever a call is made to the constructor, I want to perform a particular action? Basically how to define wrappers for default javascript methods or objects like Date() so that I can perform some action and then invoke the original method? So basically if I have something like var a = new Date(); I want it to (say) alert the value of the date everything Date() is called and then execute the default date constructor.