我在理解在处理方法,函数等时使用的赋值运算符时遇到了一些麻烦。以下是w3学校中用于定义对象的示例
function person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.eyecolor=eyecolor;
this.newlastname=newlastname;
}
这是实际的功能(放在其他地方)
function newlastname(new_lastname){
this.lastname=new_lastname;
}
在整个javascript中,这对我来说非常奇怪,你说
object.methodname = somefunctionname
有什么想法可以帮我概念化吗?
答案 0 :(得分:2)
您问题中的代码实际上与此相同:
function person(firstname, lastname, age, eyecolor) {
this.firstname = firstname;
this.eyecolor = eyecolor;
//anonymous function assigned to newlastname property
this.newlastname = function(new_lastname) {
this.lastname = new_lastname;
};
}
person
是构造函数(您可以使用new
运算符调用它来创建新实例)。 person
的每个实例都有三个属性,firstname
,eyecolor
和newlastname
。
newlastname
属性是方法,因为它的值是一个函数。当您调用该方法时,调用它的person
实例将获得lastname
属性。
例如:
var me = new person("James", "Allardice", 22, "Brown");
me.lastname; //undefined
me.newlastname("Something");
me.lastname; //Something
这是可能的,因为在JavaScript中,函数是对象。
答案 1 :(得分:1)
此语言功能称为First-class functions。维基百科的文章非常全面。
答案 2 :(得分:1)
这是关于javascript的很酷的事情。函数是第一类对象,这意味着与其他非函数式编程语言不同,您可以将它们作为参数传递给其他函数,从函数返回它们(如在您的示例中)将它们附加到像普通属性这样的对象。
这使得编程范例如(对于Web)如此重要的异步函数调用(回调)。