Re: Web Component Element definition

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> wrote:

>
> On 23.6.2013 20:42, Bronislav Klučka wrote:
>
>> Hi,
>> http://www.w3.org/TR/2013/WD-**components-intro-20130606/#**
>> lifecycle-callbacks<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
>
>

Received on Sunday, 23 June 2013 19:12:10 UTC