Javascript 在函数的变量赋值末尾没有()
我不明白为什么这一行的changeName后面没有()代码>。我的逻辑是Javascript 在函数的变量赋值末尾没有(),javascript,function,Javascript,Function,我不明白为什么这一行的changeName后面没有()。我的逻辑是this.chnname被分配给函数return,函数的末尾有一个()。谢谢你的回答 function person(firstname, lastname, age, eyecolor) { this.firstname = firstname; this.lastname = lastname; this.age = age; this.eyecolor = eyecolor; thi
this.chnname
被分配给函数return,函数的末尾有一个()。谢谢你的回答
function person(firstname, lastname, age, eyecolor) {
this.firstname = firstname;
this.lastname = lastname;
this.age = age;
this.eyecolor = eyecolor;
this.chngName = changeName;
function changeName(name) {
this.lastname = name;
}
}
myMother = new person("Sally", "Rally", 48, "green");
myMother.chngName("Doe");
document.write(myMother.lastname);
该函数是赋值的,而不是调用的。否则
myMother.chnname(“Doe”)代码>无法工作,因为该函数不返回其他函数。分配changeName()
的返回值无论如何都没有意义,因为它不会返回任何内容(因此它会自动返回未定义的)
更详细的描述:函数是JavaScript中的一级对象。这意味着(除了一些其他东西外),它们可以像任何其他值/对象一样传递,并分配给任何变量。在这种情况下,将changeName
函数分配给对象,该函数是person
构造函数作用域的本地函数,使其从外部可用(实际上,从newperson()
创建的对象可用的任何位置).他们在那里做的是引用函数而不调用它
var x = foo; // Assign the function foo to x
var y = foo(); // Call foo and assign its *return value* to y
在JavaScript中,函数是对象。适当的对象。这样你就可以到处传递对它们的引用
更多说明:请不要缩进{
。这很难看。而且,你的缩进样式根本不一致。我已经按应该的方式对你的代码进行了缩进。添加parens调用函数:在你的情况下,函数将稍后调用,因此你只希望引用不带parens的函数。有关详细信息,请参阅以下内容:谢谢Dave和所有人。为了让我更清楚的是,可以说y=x();与y=foo()相同;