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