And*_*lli -2 javascript arrays
我有这个代码示例:
function s () {
this.func = [];
this.func.addF = function (str) {
this.func.push(str);
}
}
Run Code Online (Sandbox Code Playgroud)
当我创建该对象的实例时:
var a = new s ();
a.func.addF ("hello");
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说:未捕获的TypeError:无法读取未定义的属性'push'.
我可以理解那时this.func尚未定义,但我该怎么做才能使这项工作成功.请帮忙.
有一个问题this.在javascript中,this指向绑定上下文或用于调用函数调用的内容.其值取决于函数的调用方式.
function s () {
var self = this;
self.func = [];
self.func.addF = function (str) {
self.func.push(str);
}
}
var a = new s ();
a.func.addF("hello"); // Display 'hello'
Run Code Online (Sandbox Code Playgroud)
您是否尝试将方法添加到内部对象(数组)或外部对象(由s构造的方法)?
function s () {
this.func = [];
this.addF = function (str) {
this.func.push(str);
}
}
Run Code Online (Sandbox Code Playgroud)
function s () {
this.func = [];
this.func.addF = function (str) {
this.push(str);
}
}
Run Code Online (Sandbox Code Playgroud)
原因与this定义方式有关.当您调用这样的方法时:
a.func.addF ("hello");
Run Code Online (Sandbox Code Playgroud)
变量this没有引用a,它指的是a.func. a.func没有属性func,但它确实有方法push,所以如果你真的打算将函数添加到数组对象本身,那么只需使用this.push.