wiki article中找到的头等公民的定义是:
对象是
时的第一类
有人可以解释/详细说明第5项要求(粗体)吗?我认为这篇文章应该提供更多细节,因为“内在身份”正在捕捉到什么意义。
也许我们可以在我们的讨论中使用Javascript中的函数和C中的函数来说明第5个子弹。
我相信C中的函数是二等的,而函数在Javascript中是一流的,因为我们可以在Javascript中执行以下操作:
var foo = function () { console.log("Hello world"); };
,这在C中是不允许的。
同样,我的问题实际上是在第5个子弹(要求)。
答案 0 :(得分:8)
从概念上讲,内在身份非常简单。如果一件东西拥有它,它的身份不依赖于该东西外部的东西。它可以是别名,引用,重命名,有什么你,但它仍然保持“身份”的任何东西。人们(大多数人,无论如何)都有内在的身份。你是你,不管你的名字是什么,你住在哪里,或者你在生活中可能遭受的身体转变。
另一方面,电子没有内在的同一性。也许在这里引入量子力学只是混淆了这个问题,但我认为这是一个非常奇妙的例子。没有办法“标记”或“标记”电子,以便我们可以区分它和邻居。如果用一个电子替换另一个电子,绝对没有办法区分旧电子和新电子。回到计算机:“内在身份”的示例可能是Object#hashCode()
in Java返回的值,或者JavaScript引擎使用的任何允许此语句为假的机制:
{} === {} // false
但这是真的:
function foo () {}
var bar = foo;
var baz = bar;
baz === foo; // true