这是面向对象的Javascript吗
以下代码是否等效于具有关联函数的类?“obj.start”函数和startEngine()函数有什么区别?(不是逻辑方面,而是结构方面) [EDIT]实际上描述了我的问题的全部内容 以下代码是否等效于具有关联函数的类 这取决于您如何实例化它。如果使用函数声明样式(如startEngine使用),并且如果使用这是面向对象的Javascript吗,javascript,Javascript,以下代码是否等效于具有关联函数的类?“obj.start”函数和startEngine()函数有什么区别?(不是逻辑方面,而是结构方面) [EDIT]实际上描述了我的问题的全部内容 以下代码是否等效于具有关联函数的类 这取决于您如何实例化它。如果使用函数声明样式(如startEngine使用),并且如果使用new关键字对其进行实例化,并删除return值,则为“是”(尽管startEngine是私有的,但在创建指向它的公共指针之前不是公共的) “obj.start”函数和startEngine(
new
关键字对其进行实例化,并删除return
值,则为“是”(尽管startEngine是私有的,但在创建指向它的公共指针之前不是公共的)
“obj.start”函数和startEngine()函数有什么区别
区别在于:
- startEngine是一个函数声明,因此它被提升,而obj.start是一个匿名函数表达式,它没有被提升
- startEngine是
“类”的一种类似私有的方法。obj.start不是Car
- obj.start是obj对象上的一个方法,它是
类的一个属性Car
- 如果将Car作为函数调用(没有new关键字),则返回obj,因此可以从
外部调用Car
的方法,而如果没有公共指针,则无法从obj
外部访问startEngineCar
obj.start
分配一个函数,并且以后可以使用obj.start()访问该函数,但是,它没有回答为什么要使用该函数而不是带有normal
头函数startEngine()
的函数。。汽车在这里算是一个档次吗?谢谢
var Car = function (carElement)
{
var obj = {},
isRunning = false,
dashboard,
speed = 0,
accelerometer,
gearElement,
transmission =
{
'first': { ts: 15, rpm: 2 },
'second': { ts: 30, rpm: 4 },
'third': { ts: 50, rpm: 5 },
'fourth': { ts: 80, rpm: 5 },
'fifth': { ts: 110, rpm: 6 }
};
function startEngine()
{
//some code to start engine
}
obj.start = function ()
{
//more code..
}
obj.stop = function ()
{
//even more code...
};
(function init()
{
obj.start();
}());
return obj;
};