Javascript 如何创建一个原型方法,使用闭包保存不同的值,同时仍然指向相同的内存?
我正在学习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))
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]
没有意识到我也可以在原型方法中使用这个
。谢谢你,我会把你的答案记为正确的。