Node.js `[Function]`和`[Function:Object]`有什么区别?
产出:Node.js `[Function]`和`[Function:Object]`有什么区别?,node.js,Node.js,产出: var Cls = function(){} var inst = new Cls() var obj = {} console.log(inst.constructor) console.log(obj.constructor) [Function]和[Function:Object]有什么区别?简短回答:Javascript没有类,它有可以实例化的函数。var-Cls是一个匿名函数;对象是一个命名函数 长答覆: Javascript函数可以实例化以创建对象,类似于在其他正式面向对
var Cls = function(){}
var inst = new Cls()
var obj = {}
console.log(inst.constructor)
console.log(obj.constructor)
[Function]和[Function:Object]有什么区别?简短回答:Javascript没有类,它有可以实例化的函数。var-Cls是一个匿名函数;对象是一个命名函数 长答覆: Javascript函数可以实例化以创建对象,类似于在其他正式面向对象语言中实例化类的方式 也就是说,您看到的是使用匿名函数的结果 输出的第一行简单地显示inst的构造函数是一个函数。它没有名称,因此没有显示名称;它是匿名的 第二行显示它是从对象函数创建的 这里有两个变体可以更好地说明我的观点:
[Function]
[Function: Object]
现在应该准确地显示
var Cls = function Cls(){};
var inst = new Cls();
同样,你也可以这样做
[Function: Cls]
类似于
var obj = new Object();
简短回答:Javascript没有类,它有可以实例化的函数。var-Cls是一个匿名函数;对象是一个命名函数 长答覆: Javascript函数可以实例化以创建对象,类似于在其他正式面向对象语言中实例化类的方式 也就是说,您看到的是使用匿名函数的结果 输出的第一行简单地显示inst的构造函数是一个函数。它没有名称,因此没有显示名称;它是匿名的 第二行显示它是从对象函数创建的 这里有两个变体可以更好地说明我的观点:
[Function]
[Function: Object]
现在应该准确地显示
var Cls = function Cls(){};
var inst = new Cls();
同样,你也可以这样做
[Function: Cls]
类似于
var obj = new Object();
函数可以有一个不可变的名称,该名称与可能引用该函数的任何变量的名称无关。函数名(如果有)是其定义的一部分:
var obj = {}
当节点的console.log记录函数时,输出将包括函数名(如果有)
这里,obj.constructor是对象构造函数,它的名称恰好是Object,也就是说,它是由函数Object{…}定义的。但是,您的Cls函数没有名称,即它是由匿名函数{}定义的。如果为该函数命名,您将看到console.log报告该函数:
这将产生以下输出:
var Cls = function thisIsTheNameOfCls(){}
var inst = new Cls()
var obj = {}
console.log(inst.constructor)
console.log(obj.constructor)
函数可以有一个不可变的名称,该名称与可能引用该函数的任何变量的名称无关。函数名(如果有)是其定义的一部分:
var obj = {}
当节点的console.log记录函数时,输出将包括函数名(如果有)
这里,obj.constructor是对象构造函数,它的名称恰好是Object,也就是说,它是由函数Object{…}定义的。但是,您的Cls函数没有名称,即它是由匿名函数{}定义的。如果为该函数命名,您将看到console.log报告该函数:
这将产生以下输出:
var Cls = function thisIsTheNameOfCls(){}
var inst = new Cls()
var obj = {}
console.log(inst.constructor)
console.log(obj.constructor)