gpt4 book ai didi

javascript - 为什么有些属性名在 JavaScript 中以双下划线开头?

转载 作者:IT王子 更新时间:2023-10-29 03:12:42 24 4
gpt4 key购买 nike

我看到 JavaScript 中某些对象的某些属性以双下划线开头。例如,__defineGetter____defineSetter____proto__。它是一个约定定义的 ECMAScript 规范吗?或者这可能只是开发者社区的一个约定?

最佳答案

这些属性由特定浏览器定义不是由 ECMAScript 定义

因此,name collision需要避免。如果他们调用属性 defineGetter,那么就不能保证网站的代码没有定义同名的属性——这会导致很多问题。但是,附加两个下划线已成为定义浏览器特定属性的事实上的方式(因为某些网站不太可能使用该约定)。

您可能会注意到其他浏览器开始使用与其他浏览器相同的命名约定(例如使用 __proto__),但这仍然不能在所有浏览器之间得到普遍保证(例如,IE 没有定义 __proto__ 属性).

此外:使用两个下划线作为“系统定义”标识符(与程序员定义的标识符相对)的惯例可以追溯到很久以前,所以我不知道该惯例是什么时候“开始”的——至少是只要 C++(参见 http://en.wikipedia.org/wiki/Name_mangling#Simple_example)

关于javascript - 为什么有些属性名在 JavaScript 中以双下划线开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com