JavaScript作为对象运行
我有一个关于JavaScript函数的问题。我将函数理解为对象,我们可以在其中向函数中添加属性和方法,但是当我注销添加了属性的函数时,我注意到一些奇怪的行为。这里是一个关于对象和函数的小例子JavaScript作为对象运行,javascript,function,object,javascript-objects,function-object,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 {firstN
//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 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(){
log('helloworld');
}
myFunction.greet='Hello JavaScript!';
log(Object.keys(myFunction))代码>您可以使用函数的
//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(){
log('helloworld');
}
myFunction.greet='Hello JavaScript!';
log(Object.keys(myFunction))代码>浏览器会看到该变量是一个函数,因此当您注销该变量时,它会尝试以对开发人员有用的方式在控制台中打印该变量。通常,我们不会将函数视为具有附加属性的东西,因此实现console.log的任何东西都不会试图向您显示这些信息。但是您从console.log中看到的东西并不是真正与语言的实际机制联系在一起的,它只是为了让开发人员更容易理解。这些属性以与其他对象相同的方式存储在相同的位置(RAM)。浏览器看到变量是一个函数,因此当您注销变量时,它会尝试在控制台中以一种对开发人员有用的方式打印它。通常,我们不会将函数视为具有附加属性的东西,因此实现console.log的任何东西都不会试图向您显示这些信息。但是您从console.log中看到的东西并不是真正与语言的实际机制联系在一起的,它只是为了让开发人员更容易理解。这些属性以与其他对象相同的方式存储在相同的位置(RAM)。属性就在那里,您只是无法通过console.log
看到它。不同的浏览器会显示不同的内容。属性就在那里,您无法通过console.log
看到它。不同的浏览器会显示不同的内容。