Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
如何让VS2008 Javascript Intellisense为复杂原型工作?_Javascript_Visual Studio 2008_Intellisense - Fatal编程技术网

如何让VS2008 Javascript Intellisense为复杂原型工作?

如何让VS2008 Javascript Intellisense为复杂原型工作?,javascript,visual-studio-2008,intellisense,Javascript,Visual Studio 2008,Intellisense,我已经能够让javascript intellisense在如下定义的“类”原型中正常工作: function GetCustomerList() { } GetCustomerList.prototype = { HEADER: { RETURN_CODE: 0, RETURN_MESSAGE: "", } , NUM_RECORDS: 0, START_RECORD: 0, END_RECORD: 0

我已经能够让javascript intellisense在如下定义的“类”原型中正常工作:

function GetCustomerList()
{
}

GetCustomerList.prototype = 
{
    HEADER: {
        RETURN_CODE: 0,
        RETURN_MESSAGE: "",
        }
    ,
    NUM_RECORDS: 0,
    START_RECORD: 0,
    END_RECORD: 0
};
我可以键入如下内容:

var req = new GetCustomerList();
req.HEADER.RETURN_CODE = 100;
VisualStudio的intellisense知道头属性,以及它自己的名为“RETURN\u CODE”和“RETURN\u MESSAGE”的属性。我可以做到:

req.NUM_RECORDS = 50;
智能感知系统工作正常

因此,intellisense可以处理复杂的嵌套类型—非常好。然而,有可能通过复杂类型的数组获得intellisense吗

例如:

function Customer()

Customer.prototype = {

    NAME: "",
    ADDRESS: "",
    ID: 0
};

function GetCustomerList()
{
}

GetCustomerList.prototype = 
{
    HEADER: {
        RETURN_CODE: 0,
        RETURN_MESSAGE: "",
        }
    ,
    NUM_RECORDS: 0,
    START_RECORD: 0,
    END_RECORD: 0,
    CUSTOMERS: [ new CUSTOMER() ]
};
其中我有一个类型为“CUSTOMER”的数组,我还为它定义了一个原型。我希望能够键入以下内容:

req.CUSTOMER[ 0 ].NAME 
并让intellisense提示我“NAME”是此数组可用的属性


这可能吗?

更新:

正如您已经注意到的,IntelliSense可以很好地用于复杂类型,但不能用于数组。即使您创建了一个内部类型数组,比如String,它仍然不起作用

我已经彻底研究了这个话题,理论上,这应该是可能的,但事实并非如此。
作为测试,创建javascript文件名it“customers.js”并包括以下内容:

function Customer() {
    /// <summary>This is my custom intellisense for the Customer type</summary>
    ///<field name="NAME" type="String">The Customer's name</field>
    ///<field name="ADDRESS" type="String">The customer's address</field>
    ///<field name="ID" type="String">The ID number</field>
}
Customer.prototype = {
    NAME: "",
    ADDRESS: "",
    ID: 0
};

function CustomerList() {
    /// <summary>The List of Customers</summary>
    ///<field name="HEADER" type="String">The header</field>
    ///<field name="CUSTOMERS" type="Array" elementType="Customer" >The list of customers in an Array</field>
}

CustomerList.prototype =
{
    HEADER: {
        RETURN_CODE: 0,
        RETURN_MESSAGE: ""
    },
    NUM_RECORDS: 0,
    START_RECORD: 0,
    END_RECORD: 0,
    CUSTOMERS: [new Customer()]
};

在VS2008中,没有办法让它工作。它将在下一版本的VS/

中工作,尽管VS不支持它,但您可能需要考虑下面的工作。

我将示例脚本更改为:

function Customer(obj) {
    /// <summary>This is my custom intellisense for the Customer type</summary> 
    ///<field name="NAME" type="String">The Customer's name</field> 
    ///<field name="ADDRESS" type="String">The customer's address</field>
    ///<field name="ID" type="String">The ID number</field>
    if (obj) return obj;
}

Customer.prototype = {
    NAME: '',
    ADDRESS: '',
    ID: 0
};

function CustomerList() {
    /// <summary>The List of Customers</summary> 
    ///<field name="HEADER" type="String">The header</field> 
    ///<field name="CUSTOMERS" type="Array" elementType="Customer" >The list of customers in an Array</field> 
}

CustomerList.prototype =
{
    HEADER: {
        RETURN_CODE: 0,
        RETURN_MESSAGE: ''
    },
    CUSTOMERS: []
}; 

反对这一点的理由是您需要构造函数中的参数。

编辑问题,而不是发布副本。将副本标记为删除。这个问题有更多的细节,应该留下来。请取消标记为“完全重复”请查看我的最新答案事实上它与那篇文章完全不同。这篇文章涉及让intellisense在VS的配置中工作。这涉及利用intellisense所需的实际语法。如果VS不支持它,这会解决问题吗?(我没有投票反对,只是问问而已)
function Customer(obj) {
    /// <summary>This is my custom intellisense for the Customer type</summary> 
    ///<field name="NAME" type="String">The Customer's name</field> 
    ///<field name="ADDRESS" type="String">The customer's address</field>
    ///<field name="ID" type="String">The ID number</field>
    if (obj) return obj;
}

Customer.prototype = {
    NAME: '',
    ADDRESS: '',
    ID: 0
};

function CustomerList() {
    /// <summary>The List of Customers</summary> 
    ///<field name="HEADER" type="String">The header</field> 
    ///<field name="CUSTOMERS" type="Array" elementType="Customer" >The list of customers in an Array</field> 
}

CustomerList.prototype =
{
    HEADER: {
        RETURN_CODE: 0,
        RETURN_MESSAGE: ''
    },
    CUSTOMERS: []
}; 
var list = new CustomerList();

var cust = new Customer();
cust.NAME = 'john';
list.CUSTOMERS.push(cust);

var cust1 = new Customer(list.CUSTOMERS[0]);
alert(cust1.NAME);

var cust2 = new Customer({ NAME: 'Mark' });
alert(cust2.NAME);