Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在哪里可以找到Javascript`typeof`操作符的源代码?_Javascript_Typeof - Fatal编程技术网

在哪里可以找到Javascript`typeof`操作符的源代码?

在哪里可以找到Javascript`typeof`操作符的源代码?,javascript,typeof,Javascript,Typeof,我想看看JavaScript中的typeof操作符是如何知道对象是函数的 确切地说,我想知道如何使用函数“body”并对其进行反向工程,以确定它需要哪些参数。属性似乎很接近,但仅在求值函数中可用 无论是uneval()还是toSource()除了过时之外,似乎都不能完全满足我的需要。显示: 未实现[[Call]]的对象是对象 实现[[Call]]的对象是函数 ([[Call]]是对象的“内部属性”——它不会直接暴露给可交互运行的JavaScript) 所以任何可以是()d的东西都是函数。这甚至包

我想看看JavaScript中的
typeof
操作符是如何知道对象是函数的

确切地说,我想知道如何使用函数“body”并对其进行反向工程,以确定它需要哪些参数。属性似乎很接近,但仅在求值函数中可用

无论是
uneval()
还是
toSource()
除了过时之外,似乎都不能完全满足我的需要。

显示:

未实现
[[Call]]
的对象是
对象

实现
[[Call]]
的对象是
函数

[[Call]]
是对象的“内部属性”——它不会直接暴露给可交互运行的JavaScript)

所以任何可以是
()
d的东西都是
函数。这甚至包括代理,因为可以像调用函数一样调用代理

关于另一个问题:

我想知道如何使用函数“body”并对其进行反向工程,以确定它需要哪些参数

最简单的方法是将函数转换为字符串,并使用正则表达式解析参数列表:

函数和(a,b){
返回a+b;
}
常量argList=String(sum).match(/\(.*)\)/)[1];
console.log(argList.split(/,\s*/);//取决于列表的复杂程度
//您可能需要对上述模式进行更详细的说明
,以显示:

未实现
[[Call]]
的对象是
对象

实现
[[Call]]
的对象是
函数

[[Call]]
是对象的“内部属性”——它不会直接暴露给可交互运行的JavaScript)

所以任何可以是
()
d的东西都是
函数。这甚至包括代理,因为可以像调用函数一样调用代理

关于另一个问题:

我想知道如何使用函数“body”并对其进行反向工程,以确定它需要哪些参数

最简单的方法是将函数转换为字符串,并使用正则表达式解析参数列表:

函数和(a,b){
返回a+b;
}
常量argList=String(sum).match(/\(.*)\)/)[1];
console.log(argList.split(/,\s*/);//取决于列表的复杂程度


//您可能需要对上面的模式进行更详细的阐述
与您相比,我可能只知道一小部分,但我会开始查看GitHub上的v8源代码,我发现这个文件似乎与typeof操作符相关:Object(实现[[Call]])“function”您可以使用
myFunction.toString()
并解析结果。在大多数情况下,您可能可以获得参数的名称,但我不知道这与
typeof
@CristopherRosales有什么关系我在搜索时忽略了这一点look@connexo我在MDN上看到了类似的东西。我不明白
(implements[[Call]])
是什么意思。与您相比,我可能只知道一小部分,但我会在GitHub上查看v8源代码,我发现这个文件似乎与typeof operator:Object(implements[[Call]])“function”有关。您可以使用
myFunction.toString()
并解析结果。在大多数情况下,您可能可以获得参数的名称,但我不知道这与
typeof
@CristopherRosales有什么关系我在搜索时忽略了这一点look@connexo我在MDN上看到了类似的东西。我不明白
(implements[[Call]])
是什么意思。我如何通过编程检查对象是否可以
()
编辑?我只需要使用
typeof
。如果您不想使用它,在绝大多数情况下,您还可以检查对象是否继承自
对象。prototype
。并不能完全回答我关于
typeof
如何工作的问题:-/它通过检查对象是否有内部
[[Call]]
方法来工作。就这样,真的,没有别的了。对于边缘情况,如果不实际尝试调用对象来查看发生了什么,那么可能无法签入JS,因为代理处理程序不可用,他可能还可以使用
instanceof Function
。如何以编程方式检查对象是否可以
()
加密?我只需要使用
typeof
。如果您不想使用它,在绝大多数情况下,您还可以检查对象是否继承自
对象。prototype
。并不能完全回答我关于
typeof
如何工作的问题:-/它通过检查对象是否有内部
[[Call]]
方法来工作。就这样,真的,没有别的了。对于边缘情况,在没有实际尝试调用对象以查看发生了什么的情况下,可能无法签入JS,因为代理处理程序不可用,他可能还可以使用
instanceof Function