I've created a new class using prototype.js. After I make the ajax.request all references to this.myClassMethodorVariable are lost. Does the ajax method blow out the object persistance? I'm fairly new to OOP javascript so could be (and probably am) overlooking some detail. Code:
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?
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.
In my page I have couple of DIVs which are hidden when the page loads. User can show or hide these DIVs.
If a user toggles a div (in page1) so that it is shown and goes to Page2 and comes back to Page1 all DIVs are hidden (i.e. initial state). (I have attached page1 and page2, so that you can try what I have said above)
How can I save the state of DHTML?
One option I know is to use cookies. One of my friend told me that IE supports DHTML Persistance (but dosen't know how to implement it).
Is there anyway to 'restore' the original alert() method or is it gone forever?
I know you can do window.alert = Window.prototype.alert, but lets say you also set Window.prototype.alert = function() { } or lets say we're in Opera, which doesnt have a Window "class".
I wanted to add an object as a prototype to separate my methods more nicely, however, I ran into a couple of problems. Apart from the obvious "scope" issues I found that any instances of my class shared the objects methods and properties.
I realise (now) that this is actually how prototypes work, they share functions and objects rather than create new instances of them for every "class", but is there any way around it? (or shouldn't I be doing things like this at all?) Code:
I am working on my own pop up calendar, mainly because the one I am currently using crashes the Safari browser at times.
So, I want to verify that what I am doing will work, in that I want to be able to have multiple calendars open at the same time, each independent of the other.
So, I start it off with:
var Calendar = { dateSelected: null, topPos:null, leftPos:null,
somefunction:function(e) { ... } };
If I create more than one calendar object, will they have their own variables, in that the dateSelected, topPos and leftPos will be unique to that instance?
Or, is there a better way to do this, that is cross-platform.....
QUESTION ONE: When is use of the jQuery prototype object appropriate, and when is it not?
BACKGROUND:I am still trying very hard to identify the error that is prohibiting me from incorporating a jQuery plug-in into my site in a manner similar to the way that the author of the plug-in has incorporated it into his.Although I have sought consultation with the author, he appears uninterested in working with me.My still fledgling knowledge of jQuery tells me that the author of the plug-in and my implementation of his plug-in are constructed differently.Whereas I use jQuery's prototype property to reference my method and then assign my method anonymously to my HTML document as follows: $().myJQMethod().The author of the plug-in does something very different.I have extracted from the author's plug-in and my implementation of it. Links to the source pages have been included.
CONSTRUCT A (The jQ_Impromptu Plug-In): (function($) { $.prompt = function(message, options) { })(jQuery);[code]...
QUESTION TWO: Although I am able to implement the author's method, it is not performing as it should. When the alert box appears with focus the hosting HTML page is suppose to show through with dimmed opacity.My implementation does not achieve this effect. Firebug has alerted to me to the following breakpoint, but I am poorly unable to interpret it.
I find the JavaScript's Object.prototype and getter/setter mechanism very nice. However, I need some help with extending an object with getters/setters in the derived class. For example:
A : function () {}
A.prototype = { a : null,
get a : function () { return a++; } };
B : function () {}
B.prototype = new A;
Now, I would like to define a getter/setter in B. How do I do that? There is no way to use the same syntax as in "A.prototype = ..." above.
I was hoping I could do something like this in javascript:
var a = {x:1, y:2}; var b = {x:2, z:3}; b.prototype = a;
And then:
b.x => 2 b.y => 2 b.z => 3
The purpose is to set up "b" as an override of "a".
I know it doesn't work that way because "prototype" is not a magic property on any object but constructors only. Is there a way to implement the above without involving a constructor?
function superDuperObject(range) { this.startContainer = new superDuperObjectStartContainer(range); }
function superDuperObjectStartContainer(range) { this.calculatedContainerNumber = doSomethingAndGetSomethingBack(range); return range.startContainer }
function doSomethingAndGetSomethingBack(range) { return someCoolInformationThatICalculateInThisFunctionTha tNeedsTheRange; }
var myObject = new SuperDuperObject(DOMRangeObjectThatIDefindedEarlie rInCode);
// Show me the startContainer of "DOMRangeObjectThatIDefindedEarlierInCode" alert(myObject.startContainer);
// Show me the calculatedContainerNumber that I get from a function that does stuff with the range passed to it alert(myObject.startContainer.calculatedContainerN umber);
in UML? I just found that UML is actually very class-based. It's difficult to depict the relationship between a constructor function, its prototype property, and objects that are created using that constructor function using UML.
Have any of you ever attempted this? How would you do it?
As I know,it's not well to extend Object.prototype derictly. In the Prototype(JS Framewoke),there is no extend Object.prototype. It only add some static method for Object class.I want to konw the reason.
I have the following nested javascript collection (below) and I'm trying to access the information within the collection using prototype so I can properly style and layout the data.
var teams = { "team1:" { "QB": "Alexander Hamilton", "RB": "John Jay",
I've ammended my code now so that I'm using objects, constructors and prototypes.
If I use the standard constructor.prototype.functionname = (){......} type of setup it works okay.
However I'm now experimenting with overwriting the prototype with a literal. As in the code below. i.e. constructor.prototype = {functionname : function() .......
Doing it this way my first new object instance fails. The subsequent new objects are fine.
I ran a check on the properties of the 1st object with '!hasOwnProperty and name in' and the result is that the prototype (or pointer to a prototype) is missing.
So the first new object of FontTrans (oH) has
Code: 1 property is Heading . . 9 property is Delay
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.
What I have been doing so far to make a "class"/Reusable object is this:
PHP Code:
function Dog(){ this.name name; this.bark = function(){
[code]...
However, recently I have been reading a book on Javascript and it said that the problem with this way of doing it, is that the bark() function will be loaded into memory for each Dog object created this way, while the body of that function is the same for each object.
- A Person class with a name property and a jump() method.
- An animal class with a isMammal property and move() method.
- A Dog class with a numberOfLegs property and a bark() method which is a subclass of Animal (thus inherits the isMammal property and move() method.
- Each of those classes in its own file.
This book I've been reading is actually pretty good, but at some points it's explanation is not rich enough.It explains that functions are objects and that objects in javascript are just key-value pairs. It says that each function has a prototype property which points to a blank Object(), but you can make it point to something else? or maybe I misunderstood it. I still don't understand how it really works.
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.
I just got this script for a countdown on a website and I got it to work locally but when I upload it to the server i get the error "index.html:22 Uncaught TypeError: Object [object Object] has no method 'fancycountdown'".
I have checked to make sure all other javascript files are loading and they are and I can't figure out whats wrong. You can see it [URL]
One of the complaints about prototype.js (google for it if you're not familiar with it) is that it's poorly documented. I have this inkling that the key to understanding prototype.js is in the bind function.
The problem with Javascript is that the "this" operator is poorly overloaded and it is often hard to understand in the context of object-oriented javascript
As I read this, it states that all functions (which are themselves objects) will, in the future, have an associated method called "bind". The function() function, so to speak, simply instantiates a Function object with the parameter list and then evals the statement, sticking the resulting execution-tree in the current code frame.
The "this" there refers to the function object associated with the call to bind(), right? But the word "arguments" there refers to the arguments passed to the function object *generated by* the call to bind().
In every example within prototype.js, bind() is called either in a constructor or within a method contexted to a javascript object, and is always called with "this" as its argument, e.g.:
As I read the code it seems to be stating that the "this" object referred to within bind()'d functions are being coerced into always referring to the current instantiated object.
But isn't this always the case anyway? Is this a rather confusing attempt to ensure "this" purity whereby the call
method.apply(object, arguments)
is forced to always have the reference to the containing object present?
I think I've got it. Bind() generates uniq functions that contain live references to the objects to which they belong, such that the function object can then be passed to setTimeout() or onMouseOver(), handlers that accept functions but not objects.
In my research in the javascript language I have encountered problems with implementing prototype inheritance while preserving private methods functioning properly. Here is an example: Code: