如果我编写一个函数来创建一个键值对,它所属的对象将是什么?

问题描述 投票:0回答:2

我是编码新手,刚刚学习一些 JavaScript。我正在学习如何使用 return 与 console.log 以及如何在其他函数中使用返回值。无论如何,我发现您可以使用函数和 return 语句创建键值对。他们举了这样的例子:

  function newObject(val) { 
        return {
            prop: val
        }
   }
   newObject(50);

   // output would be: {prop:50}

我对此有点困惑,因为这个键值对的对象是什么?我学习创建对象的方式就是你这样做:

 var newObject = {
      prop: 50
 }

所以这里这个键值对将属于被声明为变量的 newObject 对象。在我首先给出的函数示例中,对象是否仍然是 newObject,除了它不是被声明为变量而是函数?

有点困惑,也许我有点超前了。不确定如何将通过函数创建的键值对分配给对象。

javascript function object return-value key-value
2个回答
2
投票

你的困惑是完全可以理解的,我相信我们很多人一开始都有同样的疑问,很高兴你能在 JavaScript 中深入研究这些概念。

我不太擅长解释事情,但让我们澄清一下这两种使用键值对创建对象的方法之间的区别。

1 - 可以将其想象为烘烤一个蛋糕并将其直接放入标有“newObject”的盒子中。您可以当场决定风味(特性)。这是你的食谱:

var newObject = {
    prop: 50
};

您已经用巧克力片(属性值为 50)制作了一个蛋糕(一个物体),并将其放入“newObject”框中。

使用函数创建对象

现在,想象一下您正在安装一台蛋糕制作机。这台机器就是你的功能。每次使用它时,你都可以告诉它要制作什么样的蛋糕。以下是设置机器的方法:

function newObject(val) { 
    return {
        prop: val
    };
}

这台机器很特别。你告诉它,“嘿,用大量的巧克力片做一个蛋糕!” (val就像是在说“你选择多少个筹码”)。当你想要蛋糕时,你只需告诉机器要添加多少薯片即可:

var result = newObject(50);

这就像在说:“嘿,机器,给我做一个有 50 块巧克力片的蛋糕!”现在,“结果”就是你的盒子,里面装着这个新鲜制作的蛋糕。

好吧,我的解释有点愚蠢,但我经常和我儿子一起使用......

这是真正的区别:

直接赋值与函数:

  • 直接赋值:创建一个对象并将其直接分配给变量。
  • 函数: 您创建一个返回对象的函数。当您调用该函数时,该对象就会被创建。

使用函数方法,您可以根据函数的参数动态创建具有不同属性的对象,使您的代码更加灵活和可重用。

当对象的属性是静态的或提前已知时,直接赋值非常简单且有用。

当您需要创建多个具有相似结构但不同值的对象时,或者当对象的结构可能依赖于某些逻辑或计算时,函数方法会更强大。


1
投票

对象是一个独立的实体。它不需要名称,也不需要存储变量,它可以独立存在。

在您的示例中,对象是通过分别评估对象文字

{ prop: val }
{ prop: 50 }
来创建的。结果是对该对象的引用,一个可以由程序复制、共享和传递的句柄。它可以从
newObject
函数返回,或存储在
newObject
变量中。

© www.soinside.com 2019 - 2024. All rights reserved.