代码之家  ›  专栏  ›  技术社区  ›  MForster

JavaScript函数的prototype属性的初始值是多少?

  •  6
  • MForster  · 技术社区  · 15 年前

    prototype JavaScript函数对象的属性复制到内部 [[Prototype]] __proto__ )使用函数作为构造函数实例化的对象。因此,我可以将此属性设置为任何要用作原型的对象:

    function Foo() {}
    Foo.prototype = {
      toString: function() { return "I'm a Foo!"; }
    }
    new Foo().toString()
    // --> "I'm a Foo!"
    

    现有的

    function Bar() {}
    Bar.prototype.toString = function() {
      return "I'm a Bar!";
    }
    new Bar().toString()
    // --> "I'm a Bar!"
    

    但我不清楚 初始值 原型 财产是。

    function Baz() {}
    Baz.prototype
    // --> Baz {
    //       constructor: function Baz() {},
    //       __proto__: Object
    //     }
    

    物体?一个用于函数本身 constructor )一个是原型机?

    这是在ECMAScript标准中定义的吗?我试图找到它,但找不到。是否所有浏览器都以相同的方式处理这个问题?

    1 回复  |  直到 15 年前
        1
  •  10
  •   bobince    15 年前

    初始值 prototype Function 实例是的新实例 Object ,但拥有自己的财产 constructor 设置为指向新函数。

    ECMA262-5在13.2节中以典型的ECMAScript规范完全不可读的方式描述了这一点:

    原型 是创建一个新对象的结果,该对象将由表达式构造 new Object() 哪里 对象

    (17.)调用 原型 带参数“constructor”,属性描述符

    (18.)使用参数“prototype”、属性描述符{[[Value]]调用F的[[DefineOwnProperty]]内部方法: proto

    推荐文章