设置对象属性的正确语法是否返回对象函数的值?

时间:2012-02-01 21:56:28

标签: javascript

我正在学习javascript,并在此处进行了一个示例: https://developer.mozilla.org/en/A_re-introduction_to_JavaScript

function personFullName() {  
    return this.first + ' ' + this.last;  
}  
function personFullNameReversed() {  
    return this.last + ', ' + this.first;  
}  
function Person(first, last) {  
    this.first = first;  
    this.last = last;  
    this.fullName = personFullName;  
    this.fullNameReversed = personFullNameReversed;  
}  
var x = new Person('mickey', 'mouse');
document.write(x.fullName());

为什么是代码行

    this.fullName = personFullName;  
    this.fullNameReversed = personFullNameReversed;  

而不是

    this.fullName = personFullName();  
    this.fullNameReversed = personFullNameReversed();  

我认为我们是根据this.fullName

的返回值设置personFullName()

3 个答案:

答案 0 :(得分:3)

该代码使“fullName”和“fullNameReversed”属性为函数,而非简单属性。

因此,如果您需要全名,请编写x.fullName();

函数是JavaScript中的对象,可以是变量和属性的值。这是一个让JavaScript出奇的强大功能。

答案 1 :(得分:1)

this.fullName = personFullName;  

创建一个名为fullName的方法,并为其指定声明为personFullName函数

如果你要做

this.fullName = personFullName();   

将创建一个名为fullName的对象属性,该属性保存在调用时在该特定时刻生成的personFullName()值。

答案 2 :(得分:1)

personFullName返回函数本身(就像一个指针)。

personFullName()返回函数的结果。

这允许Person对象具有返回全名的方法,而不是属性。如果我使用x.first = newVal这样的对象,fullName方法会重新计算全名。

如果是属性,我必须像''x.first = newVal一样使用它; x.fullName = newFullName;'。

希望这有帮助。