函数对象如何,而不是名称/值对
How are functions objects but not name/value pairs?
在学习javascript时,我将对象理解为名称/值对的集合。例如,直接取自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
An object is a collection of properties, and a property is an association between a name and a value.
我知道函数也是对象。例如,我可以做:
function myFunc() { return "I'm a function"; }
myFunc.name = "Bob";
和
myFunc.name
将打印"Bob"。
然而,
myFunc
将打印
function myFunc() { return "I'm a function"; }
它不是名称/值对;这是一个函数。
而如果我做了这样的事情:
var myObj = { prop1: "hello", prop2: "world" }
myObj
将打印
Object {prop1: "hello", prop2: "world"}
因此,我有点困惑如何调和函数是对象,对象是名称/值对的集合,而函数不是名称/值配对的集合。
我认为这是一个很好的问题。函数和对象之间的界限在其核心可能看起来是一个模糊的概念,但我不建议使用"对象是键和值的集合"的定义将函数视为对象。
您可以查看W3C对象文章,尤其是W3C函数文章查看函数从未被实际调用和对象。
我认为函数的例子很好地表明,对象可以被视为不仅仅是"属性的集合,属性是名称和值之间的关联",但在实践中通常是这样
关于函数的对象性质,我提出了一个定义:
函数共享常规对象的所有功能,但它是一个非凡的对象,因为它可以对"()"运算符做出反应,该运算符评估函数的内部逻辑
相关文章:
- 如何按对象两个值对对象数组进行排序
- 在 Javascript 中按键值对对象数组进行排序
- 根据 JS 中的值对对象进行排序
- 将字符串数组转换为键值对对象
- 按一个对象的值对对象数组进行排序
- 如何在 javascript 中将键值对对象数组转换为关联数组
- 如何按两个不同的值对对象数组进行排序
- JavaScript:按列值对对象进行索引
- 按特性值对对象进行排序
- JS Lodash:按值对对象进行排序,最后为null
- 按子对象属性值对对象属性进行排序
- 如何从具有键/值对对象的数组中获取值
- 根据键的存在和值对对象数组进行排序
- 如何获得键值对对象中的最后一个键
- 如何在JavaScript中根据值对对象进行排序
- 以编程方式更改由标签值对对象填充的Dojo Form Select的选定选项
- 根据值对对象数组进行分组
- 按值对对象进行排序
- 正在将键值对对象发送到服务器端代码绑定
- 按值对对象进行排序