首页 > 解决方案 > JS 在原型上定义一个 getter 函数显示在对象本身上

问题描述

我有以下代码向原型添加属性:

"use strict";
var User = /** @class */ (function () {
    function User() {
    }
    Object.defineProperty(User.prototype, "prop", {
        get: function () {
            return 1;
        },
        enumerable: true,
        configurable: true
    });
    return User;
}());
console.log(new User());

console.log 函数的输出如下:(在 Chrome 中)

User {}
 prop: 1 <====
 __proto__:
  prop: 1 <=====
  constructor: ƒ User()
  get prop: ƒ ()
  __proto__: Object

似乎该属性存在于实例和__proto__. 它不应该只存在于__proto__?

在此处输入图像描述

标签: javascript

解决方案


这似乎是 Chrome 的一个错误(或奇怪的“设计”行为)。它在 Firefox 和 Safari 中运行良好。


推荐阅读