如果函数是JavaScript中的对象,那么为什么';它们的属性是否具有名称-值对语法?

如果函数是JavaScript中的对象,那么为什么';它们的属性是否具有名称-值对语法?,javascript,Javascript,如果函数是javascript中的对象,那么为什么它们的属性不能有名称-值对语法呢?例如,为什么不可能/不允许以下情况 function xx() { name: 'jhg' } alert(xx.name); 反之亦然: var person = { this.age = 32; }; alert(person.age); 因为函数声明不是对象初始值设定项。它们只是不同的语法,用于不同的目的,具有不同的用例和设计标准。数组也是对象,但我们也使用不同的初始值设定项表示法。正则

如果函数是javascript中的对象,那么为什么它们的属性不能有名称-值对语法呢?例如,为什么不可能/不允许以下情况

function xx() {
    name: 'jhg'
}
alert(xx.name);
反之亦然:

var person = {
    this.age = 32;
};
alert(person.age);

因为函数声明不是对象初始值设定项。它们只是不同的语法,用于不同的目的,具有不同的用例和设计标准。数组也是对象,但我们也使用不同的初始值设定项表示法。正则表达式也是如此

(请注意,您的第一个示例完全有效,将运行;
name
是一个标签,而不是属性名称,并且标签是一个不用于任何用途的ExpressionStatement。)


(还要注意,从ES2015开始,函数确实有一个内置的
名称
属性。这不是初始化它的方式。[在您的示例中,该函数的名称将是
“xx”
。])

,因为函数声明不是对象初始值设定项。它们只是不同的语法,用于不同的目的,具有不同的用例和设计标准。数组也是对象,但我们也使用不同的初始值设定项表示法。正则表达式也是如此

(请注意,您的第一个示例完全有效,将运行;
name
是一个标签,而不是属性名称,并且标签是一个不用于任何用途的ExpressionStatement。)


(还要注意,从ES2015开始,函数确实有一个内置的
名称
属性。这不是初始化它的方式。[在您的示例中,该函数的名称将是
“xx”

它们是对象,但不是对象文本

函数可用于创建对象的实例。例如:

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.sayHello = function() {
        console.log('Hi, my name is ' + this.name);
    };
}

var bob = new Person('Bob', 24);
bob
变量是
Person
函数的一个实例。 您可以通过以下方式从
bob
访问属性:

console.log( bob.name ) // "Bob"
您也可以按字面定义它,如下所示:

var bob = {
    name: 'Bob',
    age: 24
};

函数
语法用于创建函数。它们是可以反复使用的模板。当您只需要一个实例或数据,而不需要附加任何行为时,可以使用对象文字语法。

它们是对象,但不是对象文字

函数可用于创建对象的实例。例如:

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.sayHello = function() {
        console.log('Hi, my name is ' + this.name);
    };
}

var bob = new Person('Bob', 24);
bob
变量是
Person
函数的一个实例。 您可以通过以下方式从
bob
访问属性:

console.log( bob.name ) // "Bob"
您也可以按字面定义它,如下所示:

var bob = {
    name: 'Bob',
    age: 24
};

函数
语法用于创建函数。它们是可以反复使用的模板。当您只需要一个实例或数据,而不需要附加任何行为时,可以使用object literal语法。

您可以指定属性,但不能指定,该属性是带有函数名称的只读属性

函数xx(){}
xx.name='jhg';//是只读的,因为它是函数名
xx.foo='bar';
console.log(xx.name);

console.log(xx.foo)您可以根据需要分配属性,但不能,这是一个带有函数名称的只读属性

函数xx(){}
xx.name='jhg';//是只读的,因为它是函数名
xx.foo='bar';
console.log(xx.name);
console.log(xx.foo)可能重复的@user8783104的可能重复:尝试运行什么,以及“它不工作”如何进行:-)@user8783104:尝试运行什么,但“它不工作”如何运行?:-)