gpt4 book ai didi

javascript - 这是面向对象的 Javascript

转载 作者:行者123 更新时间:2023-11-30 17:28:19 24 4
gpt4 key购买 nike

下面的代码是否等同于一个带有关联函数的类? 'obj.start' 函数和 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;
};

[编辑] This question实际上描述了我的问题是什么

最佳答案

Is the following code equivalent to a class with associated functions?

这取决于你如何实例化它。如果您使用函数声明样式(就像 startEngine 使用的那样),并且如果您使用 new 关键字实例化它,并删除 return 值,那么是(尽管 startEngine 是私有(private)的 -在创建指向它的公共(public)指针之前不公开)。

What is the difference between 'obj.start' function and startEngine() function?

区别是:

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

关于javascript - 这是面向对象的 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com