JQuery :: When Is Use Of The Prototype Object Appropriate, And When Is It Not?
May 7, 2009
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.
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.
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.....
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:
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 want ask you if, for a web portal/application, is better prototype or Jquery? I don't want to innesc some type of flame, but after the announce that drupal use JQuery and that the new Wordpress 2.2 use Jquery I ask myself if my choice of use prototype.js is the bettere choice.
I read the documentation on the noconflicts() to mean that Prototype should be loaded first and then:
<script
This all worked great in all browsers except in IE8 which had no clue what jQuery() meant. IE8 says jQuery is undefined.
So I reversed the order of loading, jQuery first then Prototype, and now everybody is happy. Did I just read the documentation wrong or is there something else here I should be worried about?
I've previously written an image carousel with lightbox and to be honest forgot about it for quite a long time. I've just been tasked with making a few modifications (I wrote this code about 6 months ago)
Now, the problem I have is that I now need to call the internal method from the ligthbox plugin.
I've tried setting a reference to this like this but it just won't play ball. I can see that the ajax feed gets called but unfortunately I can't then access it.
I have developed a widget. I am using the jquery core api. Im having a problem when the widget is used in a weebly site. I know weebly uses prototype and I am using the workaround:
var $j = jQuery.noConflict(); however there is still a clash of some sort. I think every prototype.js function is being called or something because the page is taking a long long time to load as there are many requests being made which look like this: