创建与智能感知配合使用的 JavaScript 函数

2024-04-12

我想利用 Visual Studio Intellisense 因此我已阅读:

http://msdn.microsoft.com/en-us/library/bb514138.aspx http://msdn.microsoft.com/en-us/library/bb514138.aspx

无论如何,为什么我没有得到智能感知:

function Customer() {
    this.Id = 0;
    this.FirstName = "";
    this.LastName = "";
}

function Test() {
    /// <returns type="Customer"></returns>

    var c = new Object();
    $.ajax({
        async: false,
        dataType: "json",
        url: "Ajax/GetCustomer.aspx",
        success: function (foundCustomer) {
            // I know that found customer is of type Customer
            c = foundCustomer;
        }
    });

    return c;
}

var x = Test();
x. // No intellicense! why?

我如何告诉 Visual Studio 知道该函数将返回 TYPE 的对象Customer?例如,如果我将函数 Test 替换为:function Test(){ return new Customer(); }那么智能就会发挥作用。


Edit

我的最终目标是:

function Customer() {
    this.Id = 0;
    this.FirstName = "";
    this.LastName = "";
}

Object.prototype.CastToCustomer = function(){
    /// <returns type="Customer"></returns>
    return this;
}

$.ajax({
    async: false,
    dataType: "json",
    url: "Ajax/GetCustomer.aspx",
    success: function (foundCustomer) {

        foundCustomer = foundCustomer.CastToCustomer();
        foundCustomer.// Intellicense does not work :(
    }
});

我得到了很多 json 对象,我想使用这个辅助函数来转换它们。


临时解决方案:

这就是我最终所做的:

function Customer() {
    this.Id = 0;
    this.FirstName = "";
    this.LastName = "";
}

$.ajax({
    async: false,
    dataType: "json",
    url: "Ajax/GetCustomer.aspx",
    success: function (foundCustomer) {
        // this will never be true on real browser. It is always true in visual studio (visual studio will now think that found customer is of type Customer ;)
        if (document.URL.length == 0) foundCustomer = new Customer();

        foundCustomer.// Intellisense works!!!!
    }
});

您正在将返回值初始化为Object所以它是 Intellisense 的基础。如果将其初始化为空Customer,那么 Intellisense 将检测到它正在返回Customer

function Test() {

    var c = new Customer(); //only for Intellisense

    $.ajax({...});

    return c;
}

Test(). //Customer members now appear

您还可以使用/// <param />指定参数类型:

$.ajax({
    ...

        success: function (foundCustomer) {
           /// <param name='foundCustomer' type='Customer' />
           foundCustomer. //Customer members appear            
        }
});

最后,你的document.URL.length也可以在cast方法中使用trick:

Object.prototype.CastToCustomer = function() {

  var c = new Customer();
  if (document.URL.length) c = this;
  return c;

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建与智能感知配合使用的 JavaScript 函数 的相关文章

随机推荐

  • 如何在flutter中为android和iOS进行face id身份验证

    您好 我尝试寻找有关在 flutter 中使用面部 ID 进行身份验证的资源 该资源适用于 Android 和 iOS 我尝试搜索一些资源 但大多数人都说face id仅在iOS中可用 有没有任何指南或资源可供我阅读以在 Android 和
  • javascript将元素推入数组的开头[重复]

    这个问题在这里已经有答案了 我有一个对象数组 我想将一个元素推入数组的开头 我有这个 var TheArray TheObjects Array TheArray push TheNewObject 正在添加TheNewObject在最后
  • 在基于mysql中的选择的插入期间增加非自动增量字段

    我使用 select 语句将一个表中的记录插入到另一个表中 插入的表有一个新字段 该字段应在每次更新时递增 1 但不应是自动递增字段 因为每次更新每组记录的数字都需要重新开始 如果使用的 select 语句选择 42 条记录 则新表将具有一
  • AngularJS Protractor - 使用 Ng-Click 绑定查找页面上的元素

    我的页面上有一个按钮 如下所示
  • Bootstrap 3 导航丸不起作用

    我已遵循文档 但我不确定为什么我的pills不工作 HTML
  • gremlin 查询中的类型转换

    如何使用 AWS Neptune GDB 在 gremlin 控制台中将字符串值转换为整数类型 我的属性 age 带有字符串值 需要将其转换为整数类型以进行查询中的数学运算 感谢所有建议 我尝试了以下 kelvin 建议的查询 但遇到了这些
  • 如何使用 Ninject 设置可选方法拦截?

    假设我有一个类 我有时想 但现在总是 拦截一些 但不是全部 方法 据我了解 这可以通过以下方式完成 InterceptAround 在我的 Ninject 模块中 在更高级别的代码中 或者在这些方法上使用 InterceptAttribut
  • C# COM 跨线程

    我们正在开发一种软 件来控制科学测量设备 它提供了一个 COM 接口 定义了几个函数来设置测量参数并在测量数据时触发事件 为了测试我们的软件 我正在实现该设备的模拟 com 对象运行一个循环 定期触发事件 客户端应用程序中的另一个循环现在应
  • 捕获单个网络摄像头帧。在 PHP 中使用

    有没有办法从用户网络摄像头捕获单个帧并将其传递到服务器端 我尝试使用navigator getUserMedia 它允许我创建一个 LocalMediaStream 对象 我可以将其传递给视频元素 但似乎没有可以理解的方法来获取视频本身用于
  • 无效的 Web 服务调用,缺少参数值

    我已经看这个有一段时间了 看不出问题出在哪里 任何帮助是极大的赞赏 WebMethod true ScriptMethod UseHttpGet true ResponseFormat ResponseFormat Json public
  • 乘客错过了生产环境中的开发宝石

    我的生产服务器上有一个奇怪的行为 我通过 Capistrano 将 Rails 3 应用程序部署到生产服务器 Capistrano 脚本在部署结束时重新启动乘客 当我打开应用程序时 我看到一条乘客错误消息 Could not find au
  • 防止回车键触发按钮

    我有一个搜索输入框 当用户按下 Enter 时不需要执行任何操作 我正在使用 EmberJS 和 Jquery 以及以下代码 目前 它可以禁止触发弹出窗口 但由于某些原因 在 IE9 中 当按下 Enter 键时 切换按钮将成为焦点 在 C
  • 多个类的父类的部分特化

    我想对模板类使用部分专业化 以便该模板类的所有子级都将使用该专业化 让我用一个例子来解释一下 template lt typename T unsigned int rows unsigned int cols gt class BaseM
  • Heroku 应用程序上的远程 mysql 数据库

    我可以使用个人 Web 服务器上的 mysql 数据库而不是 heroku 的数据库吗 我这样配置我的生产数据库 production adapter mysql2 database somedatabase username someus
  • FastReport 5.3 Designer无法访问事件

    我在用着快速报告Delphi 10 1 Berlin 中的版本 5 3 14 我正在移植最初编写的 VCL 应用程序DelphiXE 当我打开报告时快速报表设计器单击对象检查器上的 事件 选项卡不会执行任何操作 我也无法单击报告的 代码 选
  • 解释日期:Console.Writeline 与 string.Format

    给出以下 C 代码 var dt DateTime Now Console WriteLine 0 MM dd yy 1 dt string Format 0 MM dd yy dt 当短日期 在 Windows 7 下 Control P
  • 多核::应用?

    有没有类似的东西sapply in the multicore图书馆 或者我必须unlist mclapply 为了达到这个目的 如果它不存在 原因是什么 提前致谢 如果这是一个愚蠢的问题 抱歉 在图书馆parallel 你有mcmappl
  • 来自全新 Yeoman 安装的 gruntserve 返回 - 警告:未找到任务“serve”

    运行后yo angular进而cd进入应用程序的根文件夹 与应用程序文件夹处于同一级别 gruntfile package json等 我尝试grunt serve我收到上述错误 Grunt 不会为我启动服务器 我到处寻找但找不到说要跑np
  • 如何在 Mathematica 中将包含小数点的字母数字(参考)数字转换为字符串

    我有以下类型 DAA76647 1 的参考号 我想将其原封不动地转换为 Mathematica 中的字符串 That is myfn DAA76647 1 给出作为输出 DAA76647 1 是否有捷径可寻 输入不能是字符串 除了转换为字符
  • 创建与智能感知配合使用的 JavaScript 函数

    我想利用 Visual Studio Intellisense 因此我已阅读 http msdn microsoft com en us library bb514138 aspx http msdn microsoft com en us