gpt4 book ai didi

javascript - 在 Javascript 中,函数声明是创建构造函数的唯一方法吗?

转载 作者:行者123 更新时间:2023-11-28 06:37:13 25 4
gpt4 key购买 nike

在 JavaScript 中,函数声明是创建可用于实例化新对象的构造函数的唯一方法。如果是这样,为什么?这个问题是由下面的代码产生的。

var customevent = {
prop1 : "div",
prop2 : "div2"
}

var myevent_obj = new customevent();

浏览器JS控制台显示

SyntaxError: customevent is not a constructor.

最佳答案

根据定义,a constructor是一个实现内部 [[call]] 的对象和 [[Construct]]方法。除了少数内置函数外,所有 native 函数都是构造函数。大多数宿主函数不是构造函数,尽管有些是。

EMCAScript 2015 还定义了外来函数对象,它们可能是内置的,但不一定是构造函数。

有两种方法可以创建可以作为构造函数的 native 函数:

  1. 函数声明:function MyConstructor(){...}
  2. 函数表达式(通常通过赋值):var MyConstructor = function(){...};

就是这样。

在OP中:

var customevent = {
prop1 : "div",
prop2 : "div2"
}

customevent 是一个对象,而不是一个函数。普通对象不实现 [[Call]][[Construct]] 内部方法,因此它们不能是构造函数。不过它们可以用作原型(prototype):

function customConstructor(){}
customConstructor.prototoype = customevent;

var newCustomEvent = Object.create(customevent);

关于javascript - 在 Javascript 中,函数声明是创建构造函数的唯一方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34172212/

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