- From: Bronislav Klučka <Bronislav.Klucka@bauglir.com>
- Date: Sun, 23 Jun 2013 21:38:47 +0200
- To: public-webapps@w3.org
- Message-ID: <51C74EC7.1080204@bauglir.com>
Hi, I actually came across this issue while using Polymer's platform.js... I could not make it work... I have to do magic like this... <element name="x-bauglir-listitem" constructor="XBauglirListItem"> <script> if (this !== window) { var first = true; this.register({ prototype: { "readyCallback": function() { if (first) { Object.defineProperties(XBauglirListItem.prototype, { "foox": { "value": function() { alert('d'); }, } }); } first = false; }, } }); } </script> </element> putting the definition outside readyCallback caused unknown XBauglirListItem error so I'm wondering how it's gonna be in web Components... since the mechanism is the same... until readyCallback i called, the construstor function does not exists I assume ------------------- ({ readyCallback: function() { }, get foo() {}, set foo() {} }) confuses me... I 've seen the whole ({ }) contruct in web comps for the first time and I think it's web comps specific... and the setters and getters... from your example... are those getter and setters for method foo or property foo? Shouldn't setter have a parameter? The value that is about to be set? how do I define whether property is changable, enumerable? Or is this working proposition of Web Comps based on working proposition of ES6? Brona On 23.6.2013 21:11, Scott Miles wrote: > To be clear, this question doesn't really have anything to do with the > components spec. The bottom line from the spec is that the > completion-value of the script should reference an object that will be > used as the element prototype. > > How you generate that prototype is completely up to you, and there are > many ways you can do it. See examples below. > > Fwiw, my team (http://www.polymer-project.org/) is not an advocate of > the completion-value gambit. We are pushing for two-way > initialization. In other words, a separate method to register the > prototype. > > In any case, here are examples. > > You can use descriptors, but you don't need them for get/set: > > ({ > readyCallback: function() { }, > get foo() {}, > set foo() {} > }) > > if you really want to use descriptors, you can do > > Object.create(Object.prototype, { > property: { > get: function() { return 5; }, > set: function(value) {} > } > }); > > or you can mix and match: > > var prototype = { > readyCallback: function() { }, > }; > Object.defineProperty(prototype, { > property: { > get: function() { return 5; }, > set: function(value) {} > } > }); > prototype; > > > On Sun, Jun 23, 2013 at 11:45 AM, Bronislav Klučka > <Bronislav.Klucka@bauglir.com <mailto:Bronislav.Klucka@bauglir.com>> > wrote: > > > On 23.6.2013 20:42, Bronislav Klučka wrote: > > Hi, > http://www.w3.org/TR/2013/WD-components-intro-20130606/#lifecycle-callbacks > > shows defining element methods, next to the life cycle it also > shows definition of methods "ticks" and "chime", > I wonder how this construct > > ({ > > }); > > is compatible with ES5 object properties descriptors, in ES5 > it is possible to define getters and settes for > properties/methods, is it the possible to do something like > > <element .....> > ... > <script> > > ({ > readyCallback: function () { > //init component > }, > }); > > Object.defineProperties(this.prototype, { // or maybe > Object.defineProperties(this, { > "property": { > "get": function() { return 5; } > "set": function(value) {} > } > }); > </script> > > </element> > > Will it work? Is it suppose to work? > > Brona > > > > Of course I ment > Object.defineProperties(ElementConsructorName.prototype > > Brona > > -- s pozdravem Bronislav Klučka http://www.bauglir.com <http://www.bauglir.com> http://www.bauglir.com Bronislav.Klucka@bauglir.com <mailto:Bronislav.Klucka@bauglir.com> * webové aplikace * software na zakázku
Received on Sunday, 23 June 2013 19:39:14 UTC