所以我现在正在研究一些代码,而且我正在尝试理解这些代码。我已经阅读了一下它,似乎代码使用的是对象文字。所以这是代码。
var car = function(){
// ...
function drive(model, color){
// ... do something
}
// ...
return {
start: drive
}
}();
在其他地方调用
car.start(audi, black);
这是怎么回事。首先,似乎在javascript中,一个类可以有一个返回方法,而不仅仅是一个方法。 return方法是调用方法吗?使用对象文字? 我在这里有点困惑。
答案 0 :(得分:3)
首先,似乎在javascript中有一个类
JavaScript没有类。它与它们最接近的是构造函数,但是你没有这里的任何函数。
这是如何运作的
car
是匿名函数的返回值,一旦定义它就会被调用(在结束()
之后它有}
)。
返回值是使用对象文字创建的对象。
该对象文字的start
属性的值是drive
函数。函数是JavaScript中的第一类对象,因此可以像任何其他类型的对象一样传递。
答案 1 :(得分:2)
这是一种封装模式。
car
包含一个具有return
语句中所见结构的对象。drive
函数仅存在于周围函数的范围内。您无法从外部拨打drive
。car
是一个对象,其中一个属性名为start
,它是drive
的函数定义。如果您在没有括号的情况下调用car.start
,您将获得函数定义:
function (model, color) {
...
}
这是因为函数可以分配给变量(第一类)而不实际调用它们,因此您可以在以后使用您选择的范围调用预定义函数。
如果你调用car.start(audi, black)
,你执行带有给定参数的函数,并获得drive
函数返回的任何内容。
答案 2 :(得分:1)
从你看来你正在建立汽车的对象,然后你从另一个文件调用驱动器函数,并通过变量模型和颜色传递值audi和black。然后,您将返回对象的实例(“start”),其中包含变量和操作。