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

试图澄清此javascript代码

试图澄清此javascript代码,javascript,Javascript,所以我现在正在编写一些代码,我正在努力理解这些代码。我读过一些关于它的文章,似乎代码使用的是对象文字。这是代码 var car = function(){ // ... function drive(model, color){ // ... do something } // ... return { start: drive } }(); 在别处调用了另一个文件 car.start(audi, black

所以我现在正在编写一些代码,我正在努力理解这些代码。我读过一些关于它的文章,似乎代码使用的是对象文字。这是代码

var car = function(){

    // ...
    function drive(model, color){
        // ... do something
    }
    // ...

    return {
        start: drive
    }

}();
在别处调用了另一个文件

car.start(audi, black);
那么这是如何工作的呢。首先,在javascript中,类可以有一个返回方法,而不仅仅是一个方法。返回方法也在调用一个方法?使用对象文字? 我有点困惑

首先,在javascript中似乎有一个类

JavaScript没有类。最接近它们的是构造函数,但这里没有

那么这是如何工作的呢

car
是一个匿名函数的返回值,该函数在定义后立即被调用(在关闭
}
后它有
()

该返回值是使用对象文字创建的对象


该对象文本的
start
属性的值是
drive
函数。函数是JavaScript中的第一类对象,因此可以像任何其他类型的对象一样进行传递。

看起来您正在建立car的对象,然后从另一个文件调用驱动函数,并通过变量model和color传递值audi和black。然后返回对象的实例(“start”),其中包含变量和操作

这是一种封装模式

  • 对象:Javascript中没有类,只有对象
    car
    保存一个对象,其结构如
    return
    语句所示
  • 函数:外部函数是匿名的(没有名字),在定义之后直接调用(结尾的parantises)
  • 本地作用域:驱动器功能仅存在于周围功能的作用域中。您不能从外部调用
    drive
  • 封装:通过return语句,您可以控制哪些功能可以从外部访问以及如何标记。因此,
    car
    是一个具有名为
    start
    的属性的对象,这是
    drive
    的功能定义
  • 如果不带括号调用
    car.start
    ,则会得到函数定义本身:

    function (model, color) {
        ...
    }
    
    这是因为函数可以分配给变量(一级),而不需要实际调用它们,因此您可以在以后使用自己选择的范围调用预定义函数


    如果您调用
    car.start(奥迪,黑色)
    您将使用给定的参数执行函数,并获得
    drive
    函数返回的任何内容。

    谢谢昆汀,这现在更有意义了。@Michaelna-请在您的浏览器控制台中查看它的实际操作:顺便说一句,这是一个很好的阅读:)