Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript作为对象运行_Javascript_Function_Object_Javascript Objects_Function Object - Fatal编程技术网

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

我有一个关于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 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
看到它。不同的浏览器会显示不同的内容。