JavaScript函数作为对象

时间:2017-01-28 21:27:34

标签: javascript function object javascript-objects function-object

我有一个关于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');}

正如预期的那样,迎接'属性已被添加到myFunction,但当我注销myFunction时,我不会看到该属性打印出来。为什么?该地产已被添加到哪里?当我使用点运算符访问该属性时,我看到结果已注销。

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

2 个答案:

答案 0 :(得分:1)

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

for l in B:
    first = l[0]
    found = False
    for m in A:
        if m[0] == first
            found = True
            break
    if not found:
        A.append(l)

答案 1 :(得分:1)

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