Javascript 如何创建一个原型方法,使用闭包保存不同的值,同时仍然指向相同的内存?

Javascript 如何创建一个原型方法,使用闭包保存不同的值,同时仍然指向相同的内存?,javascript,Javascript,我正在学习Javascript中的原型继承,我想创建一个原型方法,该方法将使用闭包来处理相同的数据,而不是接受所有数据作为参数 使用Array.prototype.map()的map()作为示例: const arr=新数组(1,2) const arr1=新数组(1,3) console.log(arr.map==arr1.map)//true,指向同一内存 console.log(arr.map.toString())//函数映射(){[本机代码]} log(arr.map(x=>x+1))

我正在学习Javascript中的原型继承,我想创建一个原型方法,该方法将使用闭包来处理相同的数据,而不是接受所有数据作为参数

使用
Array.prototype.map()
map()
作为示例:

const arr=新数组(1,2)
const arr1=新数组(1,3)
console.log(arr.map==arr1.map)//true,指向同一内存
console.log(arr.map.toString())//函数映射(){[本机代码]}
log(arr.map(x=>x+1))/[2,3],给出正确的结果
console.log(arr1.map(x=>x+2))/[3,5]
但是对于我自己的实现,我必须创建一个新函数来保存该实例的值。是否可以使它指向内存中的相同位置,同时保持封装在闭包中的值不同?是否可以使用
map()
,因为它是用本机代码编写的

我的实施:

函数MyArray(…值){
this.value=新数组(值)
this.map=(fn)=>MyArray.prototype.map(值,fn)
}
MyArray.prototype.map=(value,fn)=>value//假装我已经处理了这里的map()逻辑。。。
const arr=新的MyArray(1,2)
const arr1=新的MyArray(1,3)
console.log(arr.map==arr1.map)//false,指向不同的内存
console.log(arr.map(x=>x))/[1,2]
console.log(arr1.map(x=>x))/[1,3]

您正在为
MyArray
构造函数中实例的
map
属性赋值。每次构造函数运行以构造新实例时,都会将新创建的函数分配给
map
属性

只需完全删除构造函数中的
this.map
赋值

函数MyArray(…值){
this.value=新数组(值)
}
MyArray.prototype.map=函数(回调){
返回此.value.map(回调);
}
const arr=新的MyArray(1,2)
const arr1=新的MyArray(1,3)
console.log(arr.map==arr1.map)
console.log(arr.map(x=>x))/[1,2]

console.log(arr1.map(x=>x))/[1,3]
没有意识到我也可以在原型方法中使用
这个
。谢谢你,我会把你的答案记为正确的。