Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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 - Fatal编程技术网

Javascript 术语上的差异?JS范围

Javascript 术语上的差异?JS范围,javascript,Javascript,我现在更多地了解JS的OO方面,而较少涉及基本的DOM操作和交互部分。在我复习我的书时,有一件事让我感到困惑,那就是全局变量、局部变量、公共变量和私有变量的术语 从我收集的信息来看,private/public似乎更多地是从JAVA用户那里借来的,但实际上它们只是全局变量和局部变量 我这样假设是错误的吗?要理解Javascript对象中的公共和私有变量: var NewObject=function(){ this.public=“那是public”; var private=“那是priva

我现在更多地了解JS的OO方面,而较少涉及基本的DOM操作和交互部分。在我复习我的书时,有一件事让我感到困惑,那就是全局变量、局部变量、公共变量和私有变量的术语

从我收集的信息来看,private/public似乎更多地是从JAVA用户那里借来的,但实际上它们只是全局变量和局部变量


我这样假设是错误的吗?

要理解Javascript对象中的公共和私有变量:

var NewObject=function(){
this.public=“那是public”;
var private=“那是private”;
};
var instance=newnewobject();
console.log(instance.public);//那是公开的

console.log(instance.private);//未定义的
要了解Javascript对象中的公共和私有变量:

var NewObject=function(){
this.public=“那是public”;
var private=“那是private”;
};
var instance=newnewobject();
console.log(instance.public);//那是公开的
console.log(instance.private);//未定义的
围绕这个问题的大量解释p.S.道格拉斯·克罗克福德

公共构造函数

原型

私人

我希望这篇文章能对你有所帮助

谢谢你对这个问题的详细解释,道格拉斯·克罗克福德

公共构造函数

原型

私人

我希望这篇文章能对你有所帮助



谢谢

Java和JavaScript有着汽车和地毯一样多的共同点。“private”和“public”这两个术语来自于它们自身,而不是来自Java。在Java中,您可以使用
public
private
protected
访问修改器关键字对隐私进行建模,在JavaScript中,您使用变量范围或属性命名约定对其进行建模。我理解编码语言的差异,但我更努力理解在JS中引用全局/局部变量时,公共/私有只是可互换的术语。一般来说……是的,在JS中有公共和私有属性,问题出在不存在的受保护系统中。一切都取决于你的范围。Java和JavaScript有着和汽车和地毯一样多的共同点。“private”和“public”是来自它自己的术语,而不是来自Java。在Java中,您可以使用
public
private
protected
访问修改器关键字对隐私进行建模,在JavaScript中,您使用变量范围或属性命名约定对其进行建模。我理解编码语言的差异,但我更努力理解在JS中引用全局/局部变量时,公共/私有只是可互换的术语。一般来说……是的,在JS中有公共和私有属性,问题出在不存在的受保护系统中。这取决于你的范围。第一个不是变量。请正确地将它们与属性区分开来。“属性是对象中的变量”,呃,好吧,这是一个几乎不合理的概括。也许词汇环境和对象之间有相似之处,但实际上它们之间有太多的差异。在JS中,我们非常关心这个术语,主要是为了避免像OP.Bergi这样的人感到困惑,因为变量(用
var
语句在作用域中声明的东西)和对象的属性之间有根本的区别。他们不是同一件事。@Bergi你关于困惑的观点正是我的问题,谢谢你的澄清。最近,在线教学的狂热已经失控,当我想进入像节点这样的领域时,松散的术语真的会让我在听到公开信息时感到困惑/private@MarcosPérezGude是的,你是对的,人们肯定会松散地使用术语,谈论“私有”变量/属性。我认为如果它能帮助人们理解,那就好了,但是另一方面,我的经验告诉我,很多JavaScript混淆源于尝试在JavaScript结构上对其他语言(如java或C++或C语言)的概念进行映射,而这实际上并不合理。第一个概念不是变量。请正确地将它们与属性区分开来。“属性是对象中的变量”,呃,好吧,这是一个几乎不合理的概括。也许词汇环境和对象之间有相似之处,但实际上它们之间有太多的差异。在JS中,我们非常关心这个术语,主要是为了避免像OP.Bergi这样的人感到困惑,因为变量(用
var
语句在作用域中声明的东西)和对象的属性之间有根本的区别。他们不是同一件事。@Bergi你关于困惑的观点正是我的问题,谢谢你的澄清。最近,在线教学的狂热已经失控,当我想进入像节点这样的领域时,松散的术语真的会让我在听到公开信息时感到困惑/private@MarcosPérezGude是的,你是对的,人们肯定会松散地使用术语,谈论“私有”变量/属性。我认为如果它能帮助人们理解,那就好了,但是另一方面,我的经验告诉我,很多JavaScript混淆源于试图在JavaScript构造上映射其他语言(如java或C++或者C语言)的概念,但它没有意义。谢谢你的链接。我将离开jQuery,为一家公司提供React和Node服务,这真的增强了我的能力。这和我的答案是一样的。我一定会仔细阅读!谢谢你的链接。我将离开jQuery,为一家公司提供React和Node服务,这确实增强了我的能力。这和我的答案是一样的
function Container(param) {
    this.member = param;
}
Container.prototype.stamp = function (string) {
    return this.member + string;
}
function Container(param) {
    this.member = param;
    var secret = 3; //private
    var that = this; // private
}

function Container(param) {

    function dec() {  // private method
        if (secret > 0) {
            secret -= 1;
            return true;
        } else {
            return false;
        }
    }

    this.member = param;
    var secret = 3;
    var that = this;

    this.service = function () {
        return dec() ? that.member : null;
    };
}