我有一个关于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时,我不会看到该属性打印出来。为什么?该地产已被添加到哪里?当我使用点运算符访问该属性时,我看到结果已注销。
有人可以解释添加属性的位置以及存储位置吗?
答案 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)中。