Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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,以下代码是否等效于具有关联函数的类?“obj.start”函数和startEngine()函数有什么区别?(不是逻辑方面,而是结构方面) [EDIT]实际上描述了我的问题的全部内容 以下代码是否等效于具有关联函数的类 这取决于您如何实例化它。如果使用函数声明样式(如startEngine使用),并且如果使用new关键字对其进行实例化,并删除return值,则为“是”(尽管startEngine是私有的,但在创建指向它的公共指针之前不是公共的) “obj.start”函数和startEngine(

以下代码是否等效于具有关联函数的类?“obj.start”函数和startEngine()函数有什么区别?(不是逻辑方面,而是结构方面)

[EDIT]实际上描述了我的问题的全部内容

以下代码是否等效于具有关联函数的类

这取决于您如何实例化它。如果使用函数声明样式(如startEngine使用),并且如果使用
new
关键字对其进行实例化,并删除
return
值,则为“是”(尽管startEngine是私有的,但在创建指向它的公共指针之前不是公共的)

“obj.start”函数和startEngine()函数有什么区别

区别在于:

  • startEngine是一个函数声明,因此它被提升,而obj.start是一个匿名函数表达式,它没有被提升
  • startEngine是
    Car
    “类”的一种类似私有的方法。obj.start不是
  • obj.start是obj对象上的一个方法,它是
    Car
    类的一个属性
  • 如果将Car作为函数调用(没有new关键字),则返回obj,因此可以从
    Car
    外部调用
    obj
    的方法,而如果没有公共指针,则无法从
    Car
    外部访问startEngine

查看关于JS对象的答案:@pc shooter,谢谢!然而,这真的与JS对象如何使用点符号访问属性和方法有关吗?我了解了如何为
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;
};