1e41f4b71Sopenharmony_ci# JavaScript
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciYou can use a **.js** file in the ECMAScript compliant JavaScript language to define the service logic of an HML page. With dynamic typing, JavaScript can make your application more expressive with a flexible design. The following describes the JavaScript compilation and running.
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Syntax
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciThe ECMAScript 6.0 syntax is supported. Lite wearables only support the following ECMAScript 6.0 syntax:
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci1. let/const
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci2. arrow functions
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci3. class
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci4. default value
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci5. destructuring assignment
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci6. destructuring binding pattern
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci7. enhanced object initializer
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci8. for-of
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci9. rest parameter
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci10. template strings
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci- Module declaration
32e41f4b71Sopenharmony_ci  
33e41f4b71Sopenharmony_ci  Import functionality modules.
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci  ```
37e41f4b71Sopenharmony_ci  import router from '@ohos.router';
38e41f4b71Sopenharmony_ci  ```
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci- Code reference
41e41f4b71Sopenharmony_ci  
42e41f4b71Sopenharmony_ci  Import JavaScript code.
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci  ```
46e41f4b71Sopenharmony_ci  import utils from '../../common/utils.js';
47e41f4b71Sopenharmony_ci  ```
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci## Objects
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci- Page objects
53e41f4b71Sopenharmony_ci    | Attribute   | Type             | Description                                      |
54e41f4b71Sopenharmony_ci    | ----- | --------------- | ---------------------------------------- |
55e41f4b71Sopenharmony_ci    | data  | Object/Function | Data model of the page. If the attribute is of the function type, the return value must be of the object type. The name cannot start with a dollar sign ($) or underscore (_). Do not use reserved words (**for**, **if**, **show**, and **tid**).<br>|
56e41f4b71Sopenharmony_ci    | $refs | Object          | DOM elements or child component instances that have registered the **ref** attribute. For an example, see [Obtaining a DOM Element](#obtaining-a-dom-element).|
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci## Obtaining a DOM Element
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ciUse **$refs** to obtain a DOM element.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci```html
64e41f4b71Sopenharmony_ci<!-- index.hml -->
65e41f4b71Sopenharmony_ci<div class="container">
66e41f4b71Sopenharmony_ci  <image-animator class="image-player" ref="animator" images="{{images}}" duration="1s" onclick="handleClick"></image-animator>
67e41f4b71Sopenharmony_ci</div>
68e41f4b71Sopenharmony_ci```
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci   ```js
72e41f4b71Sopenharmony_ci   // index.js
73e41f4b71Sopenharmony_ci   export default {
74e41f4b71Sopenharmony_ci     data: {
75e41f4b71Sopenharmony_ci       images: [
76e41f4b71Sopenharmony_ci         { src: '/common/frame1.png' },
77e41f4b71Sopenharmony_ci         { src: '/common/frame2.png' },
78e41f4b71Sopenharmony_ci         { src: '/common/frame3.png' },
79e41f4b71Sopenharmony_ci       ],
80e41f4b71Sopenharmony_ci     },
81e41f4b71Sopenharmony_ci     handleClick() {
82e41f4b71Sopenharmony_ci       const animator = this.$refs.animator; // Obtain the DOM element whose $refs attribute is animator.
83e41f4b71Sopenharmony_ci       const state = animator.getState();
84e41f4b71Sopenharmony_ci       if (state === 'paused') {
85e41f4b71Sopenharmony_ci         animator.resume();
86e41f4b71Sopenharmony_ci       } else if (state === 'stopped') {
87e41f4b71Sopenharmony_ci         animator.start();
88e41f4b71Sopenharmony_ci       } else {
89e41f4b71Sopenharmony_ci         animator.pause();
90e41f4b71Sopenharmony_ci       }
91e41f4b71Sopenharmony_ci     },
92e41f4b71Sopenharmony_ci   };
93e41f4b71Sopenharmony_ci   ```
94