Is this Object Oriented Javascript
以下代码是否等同于具有关联函数的类?"obj.start"函数和startengine()函数有什么区别?(非逻辑方面,结构方面)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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; }; |
[编辑]这个问题实际上描述了我的问题是关于什么的
Is the following code equivalent to a class with associated functions?
这取决于你如何实例化它。如果使用函数声明样式(如startengine使用),并且使用
What is the difference between 'obj.start' function and startEngine() function?
区别在于:
- startengine是一个函数声明,因此它被提升,而obj.start是一个未提升的匿名函数表达式。
- StartEngine是
Car 类的一种类似私有的方法。obj.start不是。 - obj.start是obj对象上的一个方法,它是
Car 类的属性。 - 如果将car作为函数调用(不带new关键字),则返回obj,因此可以从
Car 外部调用obj 的方法,而没有公共指针,则无法从Car 外部调用startengine。