举例
var a = function (ctx) { debugger // ctx {data: 555, name: 777} b(ctx); debugger; // ctx {data: 555, name: 777} return ctx; }var b = function (ctx) { ctx.age = 7; // 对的,我能影响到 传入的对象 ctx = ctx.data; // 案例来说 ctx 已经变成了 555才对呀为啥不起作用 debugger; // ctx 555}let d = a({ data: 555, name: 777});console.log(d); // {data: 555, name: 777, age: 777} ??? 我以为是 555
我有点蒙,这是按引用类型传值, b函数对 传来的对象做了更改, 加个 age
属性起作用了。可是ctx = ctx.data;
不起作用我有点蒙蔽
好吧,知道了,因为 ctx = ctx.data
之后,和原对象断开了连接
就像
var obj = {}obj = 123;
引用已经断开了联系,b函数并没有更改 ctx 对象,是更改了b函数内ctx这个变量指向,a函数依然指向原函数。
蝴蝶不菲
相关分类