Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
有人能解释一下这个OOP javascript结构吗_Javascript_Oop - Fatal编程技术网

有人能解释一下这个OOP javascript结构吗

有人能解释一下这个OOP javascript结构吗,javascript,oop,Javascript,Oop,有人能解释一下这个OOP javascript结构吗 我意识到这就是如何在javascript中创建“对象”,只需要解释一下符号及其含义: var vote = function(){ return { P1: function() { alert('P1'); }, P2: function() { alert('P2');

有人能解释一下这个OOP javascript结构吗

我意识到这就是如何在javascript中创建“对象”,只需要解释一下符号及其含义:

 var vote = function(){
     return {
            P1: function() {
                alert('P1');
            },

            P2: function() {
                alert('P2');
            }          

        };

    }();

    vote.P1();
    vote.P2();
  • 为什么在回访中使用公共方法?这怎么可能?用逗号分隔

  • 为什么“object”的结尾必须是()

  • 内部方法和公共方法的命名约定

  • 公共属性和方法是否具有相同的结构?有什么区别

  • 私有方法的命名约定通常是在方法/属性名
    \u privateMethod:function(){}

    前面加下划线,这是JSON(javascript对象符号)。它类似于python中的字典格式

    数组可以使用

    [1,2,3,4,5] 
    
    { field1: value1, field2: value2, field3: value3 }
    
    对象可以使用

    [1,2,3,4,5] 
    
    { field1: value1, field2: value2, field3: value3 }
    
    函数也可以内联定义

    var a = function() { .... } //a is a function
    
    函数后的()用于在函数定义后立即调用函数!因为函数是内联定义的,所以它就像是说:

    x = function() { ... }
    y = x();
    
    但浓缩为:

    y = function(){...} ();
    
    据我所知,没有公共或私有,都是公共的,函数和变量没有区别,只是它们的类型是函数

  • 它正在返回对象/散列。注意,在返回的后面是一个{,它是object/hash的开头

  • 运行返回对象的匿名函数

  • 我不明白你的意思

  • 是的,它们是相同的。属性可以是函数,因为javascript有第一类函数

  • 这段代码是人为设计的,所以很难说有什么用处。我不确定作者的意图是什么。看起来他可能是想创建一个类一样的东西,而不是javascript基于原型的OO。这段代码本来可以很容易编写

    var vote = {
    
            P1: function() {
                alert('P1');
    
    
            },
    
            P2: function() {
                alert('P2');
            }          
    
        };
    

    三个重要的概念:匿名函数、对象文本、闭包

    匿名函数 您可以声明和执行函数,而无需将其分配给变量。在您的示例中,foo不是函数,它是调用的结果:

    var item=function(){/*函数代码在这里*/}**()**;