Difference Between Object.prototype And Function.prototype?
Nov 25, 2011
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?
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.....
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'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:
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 am trying to use the sortBy function in the prototype.js library. Nevertheless, I can't work out what to include in the iterator function. Can someone shed some light on this?
Array.prototype.each = function (fn) { this.map(fn) }
This is my each function that works great in every other browser but IE. UGH! What am I doing wrong? the error points to the this in the function. Is it that IE doesn't like map? Has anyone seen this before? I thought my code was correct. Works perfect in FF, chrome and opera. the canvas text doesn't work in opera, but it does render the features so the each function is working.
I'll post the code if needed, but it's huge. here's the script running.[URL]..
I have a periodicalUpdater that returns countdown time that is created with php but I now need to call out one function when the time is right. the script PeriodicalUpdater calls