In GC, in combination with the way we set up inheritance, 'super()' is 'goog.base()': [1]
If called from the constructor - as we already implemented - 'this' is the only argument. If calling a super method, use 'goog.base(this, "methodName", args)' EdB 1: http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html On Fri, Dec 7, 2012 at 8:26 PM, Michael Schmalle <apa...@teotigraphix.com> wrote: > After doing some more research, the super() implementation in general is a > rats nest that needs to be figured out. > > Can someone give me the rules as to how super works with GC? If it's not > present etc, is super.myMethod() allowed? > > Mike > > > > Quoting Michael Schmalle <apa...@teotigraphix.com>: > >> Ok my head hurts after this one. Major crap to deal with, this is >> definitely prototype code as far as flow (FalconJS). >> >> Let me know. I can already see more hassles coming with default >> parameters. I added a get/set for you to see as well. >> >> As far as the double quotes in the expressions, that will have to wait a >> bit. >> >> Mike >> >> //----------------------------------------------- >> // JS CODE >> >> /** >> * CROSS-COMPILED BY MXMLJSC (329449.1) ON 2012-12-07 13:22:04 >> */ >> goog.provide("com.example.components.MyTextButton"); >> >> goog.require("flash.display.Sprite"); >> >> >> /** >> * @constructor >> * @extends {flash.display.Sprite} >> */ >> com.example.components.MyTextButton = function() >> { >> goog.base(this); >> /** >> * @private >> * @type {string} >> */ >> this._privateVar = 'do '; >> /** >> * @private >> * @type {string} >> */ >> this._privateVar2 = 'do not '; >> }; >> >> goog.inherits(com.example.components.MyTextButton, flash.display.Sprite); >> >> /** @type {number} */ >> com.example.components.MyTextButton.prototype.publicProperty = 100; >> >> >> /** >> * @this {com.example.components.MyTextButton} >> * @return {string} >> */ >> com.example.components.MyTextButton.prototype.get_foo = function() >> { >> return "baz"; >> }; >> >> /** >> * @this {com.example.components.MyTextButton} >> * @param {string} value >> */ >> com.example.components.MyTextButton.prototype.set_foo = function(value) >> { >> this._privateVar = value; >> }; >> >> /** >> * @this {com.example.components.MyTextButton} >> * @param {string} value >> * @return {string} >> */ >> com.example.components.MyTextButton.prototype.myFunction = function(value) >> { >> return (("Don't " + this._privateVar) + value); >> }; >> >> >> //--------------------------------------------------------- >> >> Mike >> >> >> >> >> >> Quoting Erik de Bruin <e...@ixsoftware.nl>: >> >>> Mike, >>> >>> I'm trying to keep up, but you're going so fast I seem to be missing >>> steps. Please ignore my 'duplicates' :-) >>> >>> The 'private' var declaration should look like this: >>> >>> /** >>> * @private >>> * @type {string} >>> */ >>> this._privateVar = '_do'; >>> >>> I agree on the whitespace certainly not being a priority, I'm just >>> channeling the Linter ;-) >>> >>> And we thank 'them' for adding all the stuff, but now it's "ours", so >>> (with very low priority) I say: "get rid of it." >>> >>> EdB >>> >>> >>> >>> On Fri, Dec 7, 2012 at 4:27 PM, Michael Schmalle >>> <apa...@teotigraphix.com> wrote: >>>> >>>> >>>> Quoting Erik de Bruin <e...@ixsoftware.nl>: >>>> >>>>> Closer ;-) >>>>> >>>>> I'll list all my little nags, I hope I don't start to bore you or >>>>> unnecessarily repeat myself. >>>>> >>>>> - I'm still seeing the public property from AS back instead of the >>>>> private var in the constructor, without a @type annotation, but with a >>>>> /* : type hint */ >>>>> - the private var seems to have gone completely; >>>>> - the goog.base call should be the first line in the constructor >>>>> function; >>>> >>>> >>>> >>>> >>>> READ what I wrote below, I said that is what I was working on. ;-) >>>> >>>> So WHEN I get the private property in the constructor how is the type >>>> annotation supposed to look? >>>> >>>> // @type {string >>>> this.__privateVar = "_do "; >>>> >>>> Like the above? >>>> >>>> >>>> >>>>> - the @extends annotation should have curly brackets around the type: >>>>> @extends {flash.display.Sprite} >>>> >>>> >>>> >>>> easy >>>> >>>> >>>>> - I'm missing the semi colons after the last curly bracket of a >>>>> function >>>>> block; >>>> >>>> >>>> >>>> I realized this right after I pressed send >>>> >>>> >>>>> - there are some whitespace issues (this is where the nagging gets >>>>> real bad, sorry): >>>>> - in the second and third JSDoc blocks there is an extra line >>>>> - the opening curly brackets of a function block should be on the >>>>> same line as the function keyword and behind the arguments, separated >>>>> by one (1) space >>>> >>>> >>>> >>>> Whitespace is my last concern since it has to do with indenting. I am >>>> trying >>>> to get the "meat" working. I still need to test set/get and other >>>> things. >>>> This is just round 1. >>>> >>>> >>>>> - personally, I would get rid of the 'Member' and 'Method' lines in >>>>> the JSDoc blocks, they don't provide useful information, they merely >>>>> state the name of the item, which is clearly readable a few short >>>>> lines later ;-) >>>> >>>> >>>> >>>> Right, remember this stuff was added by them. >>>> >>>> Mike >>>> >>>> >>>> >>>>> EdB >>>>> >>>>> >>>>> On Fri, Dec 7, 2012 at 4:01 PM, Michael Schmalle >>>>> <apa...@teotigraphix.com> wrote: >>>>>> >>>>>> >>>>>> Ok next iteration; >>>>>> >>>>>> - I'm working on the constructor block right now so that private var >>>>>> isn't >>>>>> showing up yet. >>>>>> - As far as I have seen that was the only lagging issue from the last >>>>>> post. >>>>>> >>>>>> Are the tags and stuff correct? >>>>>> >>>>>> >>>>>> >>>>>> //--------------------------------------------------------- >>>>>> JS CODE >>>>>> >>>>>> >>>>>> /** >>>>>> * CROSS-COMPILED BY MXMLJSC (329449.1) ON 2012-12-07 09:57:20 >>>>>> */ >>>>>> >>>>>> goog.provide("com.example.components.MyTextButton"); >>>>>> >>>>>> goog.require("flash.display.Sprite"); >>>>>> >>>>>> /** >>>>>> >>>>>> * @constructor >>>>>> * @extends flash.display.Sprite >>>>>> */ >>>>>> com.example.components.MyTextButton = function() >>>>>> { >>>>>> this.publicProperty /* : Number */ = 100; >>>>>> goog.base(this); >>>>>> } >>>>>> >>>>>> goog.inherits(com.example.components.MyTextButton, >>>>>> flash.display.Sprite); >>>>>> >>>>>> /** >>>>>> >>>>>> * Member: com.example.components.MyTextButton.publicProperty >>>>>> * @type {number} >>>>>> */ >>>>>> com.example.components.MyTextButton.prototype.publicProperty = 100; >>>>>> >>>>>> >>>>>> >>>>>> /** >>>>>> * Method: com.example.components.MyTextButton.myFunction() >>>>>> * @this {com.example.components.MyTextButton} >>>>>> * @param {string} value >>>>>> * @return {string} >>>>>> */ >>>>>> com.example.components.MyTextButton.prototype.myFunction = >>>>>> function(value) >>>>>> >>>>>> { >>>>>> return (("Don't " + this._privateVar) + value); >>>>>> } >>>>>> >>>>>> >>>>>> //-------------------------------------------------------------- >>>>>> >>>>>> >>>>>> Mike >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Michael Schmalle - Teoti Graphix, LLC >>>>>> http://www.teotigraphix.com >>>>>> http://blog.teotigraphix.com >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Ix Multimedia Software >>>>> >>>>> Jan Luykenstraat 27 >>>>> 3521 VB Utrecht >>>>> >>>>> T. 06-51952295 >>>>> I. www.ixsoftware.nl >>>>> >>>> >>>> -- >>>> Michael Schmalle - Teoti Graphix, LLC >>>> http://www.teotigraphix.com >>>> http://blog.teotigraphix.com >>>> >>> >>> >>> >>> -- >>> Ix Multimedia Software >>> >>> Jan Luykenstraat 27 >>> 3521 VB Utrecht >>> >>> T. 06-51952295 >>> I. www.ixsoftware.nl >>> >> >> -- >> Michael Schmalle - Teoti Graphix, LLC >> http://www.teotigraphix.com >> http://blog.teotigraphix.com >> >> > > -- > Michael Schmalle - Teoti Graphix, LLC > http://www.teotigraphix.com > http://blog.teotigraphix.com > -- Ix Multimedia Software Jan Luykenstraat 27 3521 VB Utrecht T. 06-51952295 I. www.ixsoftware.nl