var o = (function () { //var obj = Object.create(null); var obj = { a: 1, b: 2, }; //Object.setPrototypeOf(obj, null); return { get: function (k) { //if (obj.hasOwnProperty(k)) { return obj[k]; //} }, }; })(); //如何在不改变上面代码的情况下 修改obj对象 // console.log(o.get("a")); Object.defineProperty(Object.prototype, "self", { get() { return this; }, }); const ob = o.get("self"); ob.a = 3; console.log(ob); console.log(o.get("a")); //const obj = { // _name: "", // 定义一个私有属性 // // get name() { // return this._name; // }, // // set name(newName) { // this._name = newName; // }, //}; // //obj.name = "John"; // 调用 setter 方法,设置 name 属性的值 //console.log(obj.name); // 调用 getter 方法,获取 name 属性的值,输出: John
copy success
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46