gpt4 book ai didi

javascript - 我可以在 javascript 中找到函数参数的类名吗?

转载 作者:行者123 更新时间:2023-11-30 12:38:08 25 4
gpt4 key购买 nike

第一部分

代码:

function initGET(req, pre, cb){
var urlparts = req.url.split('?');
...
}

问题描述:
假设我不知道 req/req.url 是什么,我想找到更多关于它的信息。我知道肯定有一个类有一个名为 url 的成员。也许 req 是那个类的实例,也许 req 是继承那个类的类的实例。

问题:
我能找到req的类名吗?因为req属于某个类,继承了更多的类。您必须在某个类中定义 url 成员。


第二部分

问题描述:
在 javascript 中我是否可以找到该类,以便我可以继续查看代码或文档?

例如,

var http1 = require('http');
func(http1), //is there a function? I could get "http".

问题:
有功能吗?我可以获得“http”。


第三部分

另一个例子,

问题描述:

var server = http.createServer(function(req, res) { 
...}

http.createServer([requreListerner]) returns a new web server object.

requestListener 是一个自动添加到“请求”事件的函数。

事件:'请求'

function(request, responce) {}

请求是 http.IncomingMessage 的实例,响应是 http.ServerResponse 的实例。

代码:

    var server = http.createServer(function(req, res) { 
func(req) // is there a function? return http.IncomingMessage
func(res) // is there a function? return http.ServerResponse
...
});

问题:
有功能吗?返回 http.IncomingMessage有功能吗?返回 http.ServerResponse

最佳答案

这里有几个独立的问题。

什么是类?

JavaScript 有一个 instanceof 运算符,某些运行时值在 instanceof 的右侧使用是有意义的,因此可以说,JavaScript 有类。

类型名称

JavaScript 没有 nominal type system ,所以即使可能有类,也没有像类名这样的东西内置到语言中。

您可以将名称定义为全局对象中属性名称的点路径,这样 x != null && (typeof x == 'object') && (x instanceof eval(typeName(x)) 是真的。尽管下面讨论了一些问题。

名称稳定性

要使名称有用,它需要解决某些问题。 JavaScript 并不试图保证名称的稳定性,并且 JavaScript 程序经常违反它。

为了保持名称的稳定性,您需要

var localMyType = MyType;
... // Program here
eval("MyType") === MyType // Still true

除非程序做了一些非常奇怪的事情。

事实并非如此。

不保证全局对象的任何属性查找路径都将到达同一个构造函数。 JavaScript 程序经常违反这一点。

名称完整性

构造函数无法从全局对象访问的情况并不少见。

(function () {
var instance;
function Typ() {}

(function () {
var Typ = function () {};
Typ.prototype.x = 1;
instance = new Typ;
alert(instance instanceof Typ); // true
})();

alert(instance instanceof Typ); // false
}();

instance 的类型无法通过全局对象的任何属性查找路径到达,因此任何基于 JS 的命名方案都是不完整的。

将模块包装在闭包信封中然后将公共(public)接口(interface)分配给全局变量的做法使得用作实现细节的任何类型都无法命名。

关于javascript - 我可以在 javascript 中找到函数参数的类名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410819/

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