Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么js中的大多数属性都是公共的?_Javascript_Properties_Public - Fatal编程技术网

Javascript 为什么js中的大多数属性都是公共的?

Javascript 为什么js中的大多数属性都是公共的?,javascript,properties,public,Javascript,Properties,Public,我是js的新手,我想知道为什么js中几乎所有的属性都是公共的。 我来自C++,在这里我只使用私有属性和通过GETSter和SETTER访问程序。 JavaScript没有简单的关键字,在语言中内置,使属性私有。您可以对局部变量使用var(但是,如果它们在全局范围内,它们就不是局部变量) 您可以使用模块模式将内容设置为私有的- 但由于私有化并不容易,并且需要对私有化所需的所有大括号/闭包进行一点仪式,所以一些javascript项目将使用命名约定来实现这一点(例如,在变量名末尾加下划线表示私有)—

我是js的新手,我想知道为什么js中几乎所有的属性都是公共的。
我来自C++,在这里我只使用私有属性和通过GETSter和SETTER访问程序。

JavaScript没有简单的关键字,在语言中内置,使属性私有。您可以对局部变量使用

var
(但是,如果它们在全局范围内,它们就不是局部变量)

您可以使用模块模式将内容设置为私有的-

但由于私有化并不容易,并且需要对私有化所需的所有大括号/闭包进行一点仪式,所以一些javascript项目将使用命名约定来实现这一点(例如,在变量名末尾加下划线表示私有)——例如google


公共和私有的概念仍然存在,只是实现方式不同。

我认为这是因为JavaScript没有任何样式指南。C++和C语言等OOP语言都有一种使用。另外,JavaScript也不是为oop而设计的。@DennisZiolkowski JavaScript有原型和构造函数、对象文本,所有这些都乐意将函数或更多对象作为属性,这个
这个
关键字,您可以定义属性可枚举性和可配置性。事实上,JavaScript中的几乎所有内容都是对象。这怎么不是OOP?私人财产的缺乏更多是因为它以一种完全不同的方式运作;一切都是关于范围和闭包的。如果你是JavaScript新手,除了已经链接的资源之外,还有一个很好的资源,也是Crockford的书之一“JavaScript\u the\u Good\u Parts”也很好。如果你习惯了getter和setter,你仍然可以使用它们,你只需要引用变量而不是私有属性;这两个概念之间并没有太大的平行差异。