gpt4 book ai didi

javascript - 这些这代表什么?

转载 作者:行者123 更新时间:2023-12-02 18:19:01 25 4
gpt4 key购买 nike

下面是两个广泛使用的 JavaScript 代码片段:

Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};

Number.method('integer', function () {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});

显然,第二个代码段中的 this 代表调用增强的 integer 方法的 Number 对象。第一个片段中的 this 怎么样?从 prototype 属性我们可以猜测它代表正在增强的构造函数,但代码片段背后的逻辑对我来说是难以捉摸的。谁能详细解释一下吗?谢谢。

最佳答案

Function是所有函数使用的全局对象,就像 Number 一样是Numbers的全局对象。它们可以用作构造函数,也适用于文字,即 new Function();function () {} 都与 Function 相关。

构造函数的原型(prototype) 对象是为该构造函数创建的所有实例定义属性和方法的地方。构造函数是函数,在JavaScript中,函数对象

方法只是函数的另一个名称,通常描述一个对象属性>.

Function.prototype 上设置方法意味着每个函数都会继承该方法。

因此,this在构造函数 Fooprototype 的方法 bar 中 (Foo.prototype.bar) 等于

  • Foo.prototype 如果作为 Foo.prototype.bar() 调用
  • Foo实例(如果从该实例调用),例如var z = new Foo(); 中的 z z.bar();
  • 无论您将this定义为使用call , applybind
  • 如果在没有上下文的情况下调用,则为全局对象,即 var b = Foo.prototype.bar; b();

在您的代码中,this 预计为上述第二个,因为 Number 是一个函数,因为它是一个>构造函数,因此是Function的实例。

关于javascript - 这些这代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com