• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright JS Foundation and other contributors, http://js.foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15function Box(data) {
16  this._data = data;
17}
18
19var box = new Box('=');
20
21Object.defineProperty(Box.prototype, 'data', {
22  get: function () {
23    assert(this === box);
24    return this._data;
25  },
26  set: function (data) {
27    assert(this === box);
28    this._data = data;
29  }
30});
31
32assert(box.data === '=');
33box.data = '+';
34assert(box.data === '+');
35
36function test_access(value, proto) {
37  "use strict"
38
39  Object.defineProperty(proto, 'test', {
40    get: function () { assert (this === value) },
41    set: function () { assert (this === value) }
42  });
43
44  value.test;
45  value.test = undefined;
46}
47
48test_access ("str", String.prototype);
49test_access (1, Number.prototype);
50test_access (true, Boolean.prototype);
51