【问题标题】:Can anyone help me to undrstnd the output of the below code谁能帮我理解下面代码的输出
【发布时间】:2022-11-21 14:30:52
【问题描述】:
  let obj1 ={
    fName : 'Ayush',
    lName : 'Singh',
    city: 'Asansol',
    getName : function(){
      console.log(`I am ${this.fName} ${this.lName} from ${this.city}`)
    }
  }
  let obj2 = {
    fName : 'Aman'
  }

  obj2.__proto__ = obj1;

  console.log(obj1.getName())
  obj2.getName()
  console.log(obj2.__proto__.getName())
  console.log(obj1.__proto__.getName())

在这里,我试图检查如何原型作品。为什么我不能访问 obj1.原型.getName

【问题讨论】:

    标签: javascript object output prototype prototypal-inheritance


    【解决方案1】:

    已弃用:不再推荐此功能。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在被删除,或者可能只是出于兼容性目的而保留。避免使用它,并尽可能更新现有代码;请参阅本页底部的兼容性表以指导您的决定。请注意,此功能可能随时停止工作。

    proto 是如何作为对象的 getter 和 setter 工作的。

    为什么你的obj1。原型不起作用,因为您尚未设置它。你只为 obj2 设置它。

    来自文档的更多参考:-

    Object.prototype.proto

    【讨论】:

      【解决方案2】:

      obj2.getName(): 它在 obj2 中寻找“getName”方法但在这里找不到,所以它查看 obj2 的原型是 obj1,这里有一个方法调用“getName”

      obj2。原型.getName() = (obj2.原型).getName() = obj1.getName()

      obj1。原型.getName() 你不是在调用 obj1 中的“getName”方法,你是在调用 obj1 原型中的“getName”方法,但在这里找不到

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-29
        • 2020-04-11
        • 2022-06-11
        • 2020-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-27
        相关资源
        最近更新 更多