javascript - 这是 JavaScript 模式吗?

标签 javascript design-patterns

这是 JavaScript 模式吗?以下代码更改 test.get_context() 对象:

var test = {},
    value = {};

test.get_context = function(val) { 
  return function() { 
    return val; 
  } 
}(value);

var context = test.get_context();

context["test"] = 123;

//context = { "test": 123};

console.log(test.get_context());

但以下内容不会改变它:

var test = {},
    value = {};

test.get_context = function(val) { 
  return function() { 
    return val; 
  } 
}(value);

var context = test.get_context();

//context["test"] = 123;

context = { "test": 123};

console.log(test.get_context());

在这种情况下有什么区别

context["test"] = 123;

context = { "test": 123};

最佳答案

context["test"]context.test 设置为 123

context = { "test": 123} 将上下文替换为新对象,其中 test = 123

这是更新值和替换变量之间的区别。

您的第一个版本更新对象,而第二个版本覆盖它。

关于javascript - 这是 JavaScript 模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758361/

相关文章:

javascript - AngularJS 与(Angular JS + jQuery)

javascript - 使用拆分时是否可以为字符串数组赋值?

asp.net - 如何从 Javascript 函数设置 ASP.NET 控件的 "Visible"属性?

javascript - 绑定(bind)在 Knockout.js 中的组件内部不起作用

multithreading - Parallel.ForEach 已过时。老了,过时了?

javascript - Jasmine/Jest 类型冲突

c# - 如何 "store"类型(不是 `Type` 对象)以供将来使用?

design-patterns - 服务层模式——我们能否在特定情况下避免使用服务层?

java - 包装类是一种设计模式吗

Java 基于作为对象字段给出的 EnumType 实现业务逻辑