JavaScript 闭包与原型方法对数组引用的影响分析
作者:青柠时间:2026-10-25 17:37:59浏览:85
本文探讨JavaScript中闭包内数组被原型方法修改的现象。通过对比直接调用闭包返回函数与在原型上定义f1、f2方法,分析arr.f2()执行时this指向闭包内的arr2,导致length变为0。文章解释了原型方法如何访问并修改闭包变量,澄清了闭包作用域与原型链调用的关系。
代码片段
JavaScript 闭包与原型方法对数组引用的影响分析
代码示例如下:
var test=(function() { var arr2=[1,2,3,3]; return function(){ return arr2; }; })()
Array.prototype.f1= function () { return []; }
Array.prototype.f2= function () { this.length=0; return this; } 接着通过两种方式进行调用:
一:var arr= test();
console.log(arr.length);输出结果为4
arr.f1();
arr= test();
console.log(arr.length);输出结果为4
这一现象易于理解;
二:var arr= test();
console.log(arr.length);输出结果为4
arr.f2();
arr= test();
console.log(arr.length);输出结果为0
对此感到困惑,为何arr.f2()能够修改test函数内部闭包环境中的arr2变量;
作者最新文章
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
