Javascript 为什么不引用';这';
我试图理解为什么以下方法有效: 既然我们有Javascript 为什么不引用';这';,javascript,oop,Javascript,Oop,我试图理解为什么以下方法有效: 既然我们有 var _queries = []; function Query(queries) { _queries = this.queries = queries; } Query.prototype.add = function add(query) { _queries.push(query); }; 其中,add操作\u查询,而不是this.querys 当我们创建一个新的查询对象时 var query = new Query(['foo
var _queries = [];
function Query(queries) {
_queries = this.queries = queries;
}
Query.prototype.add = function add(query) {
_queries.push(query);
};
其中,add
操作\u查询
,而不是this.querys
当我们创建一个新的查询对象时
var query = new Query(['foo']);
query;
//=> Query { queries: ['foo'], add: function... }
query.add('bar');
query;
//=> Query { queries: ['foo', 'bar'], add: function... }
这就好像
add
将条添加到此.querys
,即使\u querys
被操纵。这对我来说并不直观。这是因为javascript将数组视为引用
这行代码
_queries = this.queries = queries;
将使\u查询
和this.querys
是指向内存数组中相同的指针
如果将其更改为:
_queries = queries.slice();
this.queries = queries.slice();
然后它们将分别指向数组的不同副本
(slice
是克隆数组的javascript方法)因为您使用了全局变量。这是一个非常糟糕的主意,不能用于多个实例。这是我决定不包含的一个更大的函数的范围