gpt4 book ai didi

javascript - 为什么我不能设置使用 'prototype' 创建的函数的 'bind' ?

转载 作者:行者123 更新时间:2023-12-03 13:28:15 25 4
gpt4 key购买 nike

考虑这段代码:

function foo(something) {
this.a = something;
}

var obj1 = {};

var bar = foo.bind(obj1);

现在以下语句不执行:
bar.prototype.newprop = "new"; // Cannot execute this

据我了解,每个函数都有一个原型(prototype)对象。那为什么我们不能执行上面的语句呢?

bar 确实是一个我们可以称之为函数的函数:
bar(2);
console.log(obj1.a); // 2

最佳答案

As I understood, every function has a prototype object.



好吧,每条规则都有异常(exception) :-) 你发现了一个:绑定(bind)函数没有 .prototype属性(property),因为他们不需要它。当您使用 new 调用绑定(bind)函数时,它将原始函数作为构造函数调用,使用原始的 .prototype对象作为新实例的原型(prototype)。

事实上,自从 ECMAScript 6 以来,许多函数都没有 .prototype带有对象的属性,因为它们不是构造函数 - 它们不能用 new 调用所以他们不需要它。其中有
  • 箭头函数 ( () => {…} )
  • 方法(method() { … } 在对象字面量和类中)
  • 内置非构造函数(如 Math.sin )
  • 关于javascript - 为什么我不能设置使用 'prototype' 创建的函数的 'bind' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842450/

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