我想知道 - JavaScript 对象、类和函数之间有什么区别? 我认为类和函数是对象类型的想法是否正确?
类和函数的区别是什么?或者它们真的是一回事,只是它们的术语根据它们的使用方式而改变?
function func() { alert('foo'); } // a function
func(); // call the function - alerts 'foo'
var func2 = function () { alert('hello'); } // acts the same way as 'func' surely?
func2(); // alerts 'hello'
var Class = function() { alert('bar'); }; // a class
var c = new Class(); // an istance of a class - alerts 'bar'
当然,类有方法和属性并且可以被实例化 - 但是,我可以对任何旧函数做同样的事情 - 或者不能?
最佳答案
你现在肯定已经知道 JavaScript 中没有类。 JavaScript 中的函数可以通过在函数调用前加上 new
来表现得像构造函数> 关键字。这被称为 constructor pattern .
在 JavaScript 中,除了原始数据类型( bool 值、数字和字符串)和 undefined
之外,一切都是对象。另一方面,null
实际上是一个对象引用,即使您一开始可能不这么认为。这就是 typeof null
返回 "object"
的原因。
JavaScript 中的函数类似于 Lua 中的函数表(即它们是可调用对象)。因此可以使用函数代替对象。同样,数组也是 JavaScript 中的对象。另一方面,对象可以被认为是关联数组。
然而,最重要的一点是 JavaScript 中没有类,因为 JavaScript 是一种原型(prototype)面向对象的语言。这意味着 JavaScript 中的对象直接继承自其他对象。因此我们不需要类(class)。我们所需要的只是一种创建和扩展对象的方法。
阅读以下主题以了解有关 JavaScript 中原型(prototype)继承的更多信息:Benefits of prototypal inheritance over classical?
关于javascript - 对象与类与函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17525450/