Js原型与原型链

原型与原型链如何理解 (opens new window)

20231224135913_.jpeg

20231224140046_v26706039c084669441c9c8d0060528f28720w.webp

20231224140135_v21fc2526a65d66ab6b96210d7076a0389r.jpeg

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