1 | ## our_shell: ysh
|
2 |
|
3 | #### Object() creates prototype chain
|
4 |
|
5 | func Rect_area(this) {
|
6 | return (this.x * this.y)
|
7 | }
|
8 |
|
9 | var Rect = Object(null, {area: Rect_area})
|
10 |
|
11 | var rect1 = Object(Rect, {x: 3, y: 4})
|
12 | var rect2 = Object(Rect, {x: 10, y: 20})
|
13 |
|
14 | # This could change to show the object?
|
15 | # pp test_ (rect)
|
16 |
|
17 | # TODO: This should be a bound function
|
18 | #pp asdl_ (rect)
|
19 | #pp (rect.area)
|
20 | #pp (rect->area)
|
21 |
|
22 | var area1 = rect1.area()
|
23 | var area2 = rect2.area()
|
24 |
|
25 | pp test_ ([rect1.x, rect1.y])
|
26 | echo "area1 = $area1"
|
27 |
|
28 | pp test_ ([rect2.x, rect2.y])
|
29 | echo "area2 = $area2"
|
30 |
|
31 | #pp test_ (rect1.nonexistent)
|
32 |
|
33 | ## STDOUT:
|
34 | (List) [3,4]
|
35 | area1 = 12
|
36 | (List) [10,20]
|
37 | area2 = 200
|
38 | ## END
|