The call method in JavaScript: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 12: | Line 12: | ||
even though it is not attached to any object. The object obj is given a color property equal to |
even though it is not attached to any object. The object obj is given a color property equal to |
||
“red”. When call() is, well, called, the first argument is obj, which indicates that the this keyword |
“red”. When call() is, well, called, the first argument is obj, which indicates that the this keyword |
||
in sayColor() should be assigned the value of obj |
in sayColor() should be assigned the value of obj. The second and third arguments are strings. They |
||
are matched up with the prefix and suffix arguments of sayColor(), resulting in the message “The |
are matched up with the prefix and suffix arguments of sayColor(), resulting in the message “The |
||
color is red, a very nice color indeed.” being displayed. |
color is red, a very nice color indeed.” being displayed. |
||
Line 30: | Line 30: | ||
passed in as the first argument. The second argument is the color argument, the only one for either |
passed in as the first argument. The second argument is the color argument, the only one for either |
||
class. |
class. |
||
[[Category:Programming language]] |
Latest revision as of 12:12, 26 April 2009
The call() method is the method most similar to the classic object-masquerading method. Its first argument is the object to be used for this. All other arguments are passed directly to the function itself. For example:
function sayColor(sPrefix, sSuffix) { alert(sPrefix + this.color + sSuffix); }; var obj = new Object(); obj.color = “red”; //outputs “The color is red, a very nice color indeed. “ sayColor.call(obj, “The color is “, “, a very nice color indeed. “);
In this example, the function sayColor() is defined outside of an object, and it references the this keyword even though it is not attached to any object. The object obj is given a color property equal to “red”. When call() is, well, called, the first argument is obj, which indicates that the this keyword in sayColor() should be assigned the value of obj. The second and third arguments are strings. They are matched up with the prefix and suffix arguments of sayColor(), resulting in the message “The color is red, a very nice color indeed.” being displayed. To use this with the object masquerading method of inheritance, just replace the three lines that assign, call, and delete the new method:
function ClassB(sColor, sName) { //this.newMethod = ClassA; //this.newMethod(sColor); //delete this.newMethod; ClassA.call(this, sColor); this.name = sName; this.sayName = function () { alert(this.name); }; }
Here, you want the this keyword in ClassA to be equal to the newly created ClassB object, so this is passed in as the first argument. The second argument is the color argument, the only one for either class.