- 23
- 0
在看immutability-helper的源码,对其中一段函数很疑惑
update.isEquals = function(a, b) { return a === b; };
function update(object, spec) {
if (typeof spec === 'function') {
return spec(object);
}
if (!(Array.isArray(object) && Array.isArray(spec))) {
invariant(
!Array.isArray(spec),
'update(): You provided an invalid spec to update(). The spec may ' +
'not contain an array except as the value of $set, $push, $unshift, ' +
'$splice or any custom command allowing an array value.'
);
}
invariant(
typeof spec === 'object' && spec !== null,
'update(): You provided an invalid spec to update(). The spec and ' +
'every included key path must be plain objects containing one of the ' +
'following commands: %s.',
Object.keys(commands).join(', ')
);
var nextObject = object;
var index, key;
getAllKeys(spec).forEach(function(key) {
if (hasOwnProperty.call(commands, key)) {
var objectWasNextObject = object === nextObject;
nextObject = commands[key](spec[key], nextObject, spec, object);
// update.isEquals(nextObject, object) 为true那不就是 nextObject 一定等于 object, 再写 nextObject = object 有什么意义
if (objectWasNextObject && update.isEquals(nextObject, object)) {
nextObject = object;
}
} else {
var nextValueForKey =
type(object) === 'Map'
? update(object.get(key), spec[key])
: update(object[key], spec[key]);
if (!update.isEquals(nextValueForKey, nextObject[key]) || typeof nextValueForKey === 'undefined' && !hasOwnProperty.call(object, key)) {
if (nextObject === object) {
nextObject = copy(object);
}
if (type(nextObject) === 'Map') {
nextObject.set(key, nextValueForKey);
} else {
nextObject[key] = nextValueForKey;
}
}
}
})
return nextObject;
}
这段函数有什么意义? update.isEquals(nextObject, object)不就表示两者相等了
if (objectWasNextObject && update.isEquals(nextObject, object)) {
nextObject = object;
}
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
紫光极夜 普通会员 1楼
immutability-helper是一个Java库,用于自动处理immutable和mutable类型之间的切换。它可以在编译时避免意外的更改,提供更好的代码质量和可维护性。然而,我对
immutability-helper的源码有一些疑惑,包括以下几个方面:-
它的实现方式:
immutability-helper实现了一些内部逻辑,这使得我不太了解它的实现方式。这可能会影响我理解它的功能和性能。 -
它的工作原理:我并不完全理解
immutability-helper的工作原理。例如,它如何决定哪些类型可以互换?它是如何在不修改源代码的情况下改变类型? -
它的安全性:虽然
immutability-helper提供了一些功能来避免意外的更改,但我并不完全信任它的安全性。例如,它是否能够处理所有类型的类型?它是否能够处理类型转换和副作用? -
它的可扩展性:
immutability-helper可能不是最佳的选择,因为它可能会限制代码的可扩展性。我是否应该考虑使用其他库来实现同样的功能?
总的来说,我对
immutability-helper的源码有一些疑问,但我也对其提供的一些功能和性能感到乐观。在使用它之前,我建议我先深入阅读它的源码,以更好地理解它的功能和性能。 -
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

