2

在处理方法、函数等时,我很难理解赋值运算符的用途。这是 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

有什么想法可以帮助我将其概念化吗?

4

3 回答 3

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都有三个属性firstnameeyecolornewlastname

newlastname属性是一种方法,因为它的值是一个函数。当您调用该方法时,调用它的实例person将获得一个lastname属性。

例如:

var me = new person("James", "Allardice", 22, "Brown");
me.lastname; //undefined
me.newlastname("Something");
me.lastname; //Something

这是可能的,因为在 JavaScript 中,函数是对象。

于 2012-06-19T07:34:12.943 回答
1

这种语言特性称为一等函数。维基百科的文章非常全面。

于 2012-06-19T07:35:06.470 回答
1

这是关于javascript的很酷的事情。函数是一等对象,这意味着与其他非函数式编程语言不同,您可以将它们作为参数传递给其他函数,从函数返回它们并(如您的示例中)将它们像普通属性一样附加到对象。

这使得编程范式像(对于网络)如此重要的异步函数调用(回调)。

于 2012-06-19T07:42:51.447 回答