为什么javascript通过引用传递对象?

vkjb38sjhbv98h4jgvx98hah3fef

我想知道这背后是否有理由,因为在我看来,如果将对象作为值传递,它将更加面向对象。实际上,这将是对象的功能范围,就像使用基元一样。

仅仅是出于优化目的,对象是通过引用传递的?


参考:http : //snook.ca/archives/javascript/javascript_pass

本杰明·格伦鲍姆(Benjamin Gruenbaum)

我们路过的是什么?

JavaScript不会通过引用传递对象。通过参考值(C#Java)传递对象JavaScript总是通过值传递-该值可能恰好是对对象的引用。

function foo(obj){
   obj = {};
}
var o = {x: 5};
foo(o);
console.log(o.x); // 5, proof that JavaScript is pass-by-value

例如,在C ++中:

void foo(int& i){
    i = 5; 
}
int j = 10;
foo(j);
std::cout << j; // logs 5, this is what pass-by-reference is

JavaScript中的基值,通过引用传递它们是没有意义的,因为通过值无论如何它们都是不可变的(您不能更改数字5)。

但是价值观要好得多!

我同意,值具有更好的语义。您不能返回错误地从未知位置修改的值。它要清晰得多,而且很容易优化。通常,不可变性在JavaScript中获得了很大的发展,并且很多人(包括我在内)都在使用不可变集合(例如ImmutableJS)。请注意,非原始值类型是已计划的,但目前处于规范范围内,不会在ES7之前出现。

这是我能找到的唯一参考,我在讨论邮件列表中没有看到它的讨论,但我希望它正在发展中:)

基本上,对我们可以高效执行此操作的了解比JavaScript更新得多。JavaScript是一种非常有趣的语言,但请记住,它是由一个人紧急完成的,设计时间为10天。诸如价值对象之类的好东西正在发展中,但是我们将不得不与现在的东西联系起来。如果让您感觉更好,许多其他语言也可以这样做(例如Scala,Java和C#)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Javascript变量没有对象通过引用传递?

来自分类Dev

为什么对象通过引用自动传递?

来自分类Dev

为什么必须通过引用传递String对象?

来自分类Dev

为什么我的变量通过引用传递?

来自分类Dev

为什么在PHP中通过引用传递?

来自分类Dev

为什么通过const引用传递constexpr对象有效,但按值不能编译

来自分类Dev

为什么我在这里不能通过引用传递类对象?

来自分类Dev

为什么我在这里不能通过引用传递类对象?

来自分类Dev

为什么返回对象的JavaScript函数通过引用(引用其参数)来实现?

来自分类Dev

通过引用传递对象

来自分类Dev

Coffeescript / Javascript为什么在传递给方法时,克隆数组中的对象似乎丢失了引用?

来自分类Dev

为什么Javascript对象引用未更新?

来自分类Dev

为什么通过值而不是const引用传递?

来自分类Dev

为什么不能在C中通过引用传递指针?

来自分类Dev

为什么通过引用传递导致崩溃(C ++)?

来自分类Dev

为什么我的INT变量通过引用传递?C#

来自分类Dev

为什么通过引用传递解决了我的递归错误?

来自分类Dev

为什么Python列表没有通过引用传递

来自分类Dev

为什么追加不起作用,通过引用传递?

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

引用传递JavaScript对象

来自分类Dev

Javascript-返回通过引用传递的修改对象

来自分类Dev

javascript对象是否通过引用或值传递

来自分类Dev

通过引用传递StreamReader对象

来自分类Dev

通过引用传递指向的对象

来自分类Dev

为什么允许通过const引用而不是普通引用传递R值?

来自分类Dev

javascript如何通过引用传递?

来自分类Dev

为什么在此javascript示例中引用窗口对象?

Related 相关文章

  1. 1

    为什么Javascript变量没有对象通过引用传递?

  2. 2

    为什么对象通过引用自动传递?

  3. 3

    为什么必须通过引用传递String对象?

  4. 4

    为什么我的变量通过引用传递?

  5. 5

    为什么在PHP中通过引用传递?

  6. 6

    为什么通过const引用传递constexpr对象有效,但按值不能编译

  7. 7

    为什么我在这里不能通过引用传递类对象?

  8. 8

    为什么我在这里不能通过引用传递类对象?

  9. 9

    为什么返回对象的JavaScript函数通过引用(引用其参数)来实现?

  10. 10

    通过引用传递对象

  11. 11

    Coffeescript / Javascript为什么在传递给方法时,克隆数组中的对象似乎丢失了引用?

  12. 12

    为什么Javascript对象引用未更新?

  13. 13

    为什么通过值而不是const引用传递?

  14. 14

    为什么不能在C中通过引用传递指针?

  15. 15

    为什么通过引用传递导致崩溃(C ++)?

  16. 16

    为什么我的INT变量通过引用传递?C#

  17. 17

    为什么通过引用传递解决了我的递归错误?

  18. 18

    为什么Python列表没有通过引用传递

  19. 19

    为什么追加不起作用,通过引用传递?

  20. 20

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  21. 21

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  22. 22

    引用传递JavaScript对象

  23. 23

    Javascript-返回通过引用传递的修改对象

  24. 24

    javascript对象是否通过引用或值传递

  25. 25

    通过引用传递StreamReader对象

  26. 26

    通过引用传递指向的对象

  27. 27

    为什么允许通过const引用而不是普通引用传递R值?

  28. 28

    javascript如何通过引用传递?

  29. 29

    为什么在此javascript示例中引用窗口对象?

热门标签

归档