繁体   English   中英

JavaScript函数作为对象

[英]JavaScript Functions as Objects

我有一个关于JavaScript函数的问题。 我读了“函数作为对象”,在其中也可以向函数添加属性和方法,但是当我注销添加了属性的函数时,会注意到一些奇怪的行为。 这是我针对对象和函数所举的一个小例子。

//Object Example
var obj = {
    firstName: 'John',
    lastName: 'Doe',
};
obj.address = '111 Main St. New York, NY';
console.log(obj); // Object {firstName: "John", lastName: "Doe", address: "111 Main St. New York, NY"}

//Function Example
function myFunction () {
    console.log('Hello World');
}
myFunction.greet = 'Hello JavaScript!';
console.log(myFunction); // function myFunction() { console.log('Hello World');}

不出所料,'greet'属性已添加到myFunction中,但是当我注销myFunction时,我看不到该属性已打印出来。 为什么? 在哪里添加属性? 而当我使用点运算符访问属性时,会看到结果注销。

有人可以解释该属性的添加位置和存储位置吗?

您可以使用函数的Object.keys获得自己的属性。

 function myFunction () { console.log('Hello World'); } myFunction.greet = 'Hello JavaScript!'; console.log(Object.keys(myFunction)); 

浏览器发现该变量是一个函数,因此当您注销该变量时,它将尝试以有用的方式在控制台中将其打印给开发人员。 通常,我们不会将函数视为具有其他属性的事物,因此无论执行什么console.log都不会尝试向您显示该信息。 但是,您从console.log中看到的内容并没有真正与该语言的实际机制联系在一起,只是为了使开发人员易于理解。 这些属性的存储方式与其他对象的存储方式相同,位于相同的位置(RAM)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM