我是编写OO JS的新手,但这让我很难过.所以我设置了新的Call对象,然后定义了我认为是空数组的东西.当我调用AddFieldQueryToArray()时,我得到了
Uncaught TypeError: Cannot call method 'push' of undefined
Run Code Online (Sandbox Code Playgroud)
上 this.fieldArray.push(field)
我真的不知道为什么.我也尝试this.fieldArray = fieldArray;过构造函数.
function Call()
{
var fieldArray = new Array();
var queryArray = new Array();
}
Call.prototype.AddFieldQuerysToArray = function(field,query)
{
if(field !== 'undefined')
{
this.fieldArray.push(field);
}
this.queryArray.push(query);
}
Run Code Online (Sandbox Code Playgroud)
Ja͢*_*͢ck 10
您应该this.在构造函数中引用实例属性:
function Call()
{
this.fieldArray = [];
this.queryArray = [];
}
Run Code Online (Sandbox Code Playgroud)
new Array()有一个[]我上面使用的快捷方式.
如果你使用,var fieldArray = [];你将创建一个局部变量,一旦你的实例被创建就会被销毁,除非你使用这种构造:
function Call()
{
var fieldArray = [];
this.AddFieldQuerysToArray = function(field, query) {
// ...
fieldArray.push(field);
}
}
Run Code Online (Sandbox Code Playgroud)
这为每个实例创建了一个闭包,在fieldArray整个实例的生命周期中,该闭包"保持活动".
| 归档时间: |
|
| 查看次数: |
4233 次 |
| 最近记录: |