Discussions
Stay up-to-date with the latest news from NetSuite. You’ll be in the know about how to connect with peers and take your business to new heights at our virtual, in-person, on demand events, and much more.
Now is the time to ask your NetSuite-savvy friends and colleagues to join the NetSuite Support Community! Refer now! Click here to watch and learn more!
Stay in the Know
Be sure you're subscribed to NetSuite communication to stay in the know about monthly happenings, updates and announcements. Subscribe
Be sure you're subscribed to NetSuite communication to stay in the know about monthly happenings, updates and announcements. Subscribe
Not really SuiteScript, but JS question: overriding another objects methods
It isn't really overriding because the two objects are in the same hierarchy, it's more "hijacking".
What I want to do is have one object ("Mgr") hijack a method on an instance of another object ("Widget")
My real code is way complex and messy, but I banged out a very simple example that illustrates what I want. I'm sure this will show my js-rookie-ness but I'm stuck!
Basically, if you save the below code in a text file (with html extension) you should be good to go.
<html> <head> <title>javascript tester</title> <script> var m = new Mgr(); var w = new Widget(); function Widget() { this.setLabel = function() { alert('this is the Widget method'); } } function Mgr() { this._oldWidgetMethod = null; this.OverrideWidgetMethod = function() { this._oldWidgetMethod = w.setLabel; var self = this; w.setLabel = function() { self.setLabelOverride; }; } this.setLabelOverride = function() { this._oldWidgetMethod.apply(this, arguments); alert('this is the Mgr method'); } } </script> </head> <body> <input type=button value='Hijack Widget Method' onclick="m.OverrideWidgetMethod();"> <input type=button value='Invoke Widget Method' onclick="w.setLabel();"> </body> </html> Steve Klett | Senior Developer
NetValue Technology
0