当前位置:  开发笔记 > 编程语言 > 正文

JavaScript - 理解方法

如何解决《JavaScript-理解方法》经验,为你挑选了1个好方法。

我对理解方法原理有疑问.
我理解功能,我知道

function hello() {
    alert('Hello World');
}  

是相同的

var hello = function() {
    alert('Hello World');
}  

现在,我的问题是什么.
这是我的一个方法的对象.我不明白为什么yarsLeft内部不需要括号function people()
我正在寻找一个合乎逻辑的解释.

function people(name, age) {
    this.name = name;
    this.age = age;
    this.yearsUntilRetire = yearsLeft; // this is confised for me
}

function yearsLeft() {
    var numYears = 65 - this.age;
    return numYears;
}

创建对象

var test = new people('Superman', 50);
test.yearsUntilRetire(); // I understand this code and calling a method in that way

为什么我不能写this.yearsUntilRetire() = yearsLeftthis.yearsUntilRetire = yearsLeft();



1> Jamiec..:

当您使用没有括号(())的函数名称时,您将设置对函数本身的引用.

当您使用与括号相同的功能时,您正在执行该功能.

所以这一行

this.yearsUntilRetire = yearsLeft;

设置yearsUntilRetire为指向该功能.此后你可以这样做:

this.yearsUntilRetire(); // execute the yearsLeft function.

为什么我不能写这个.yearsUntilRetire()= yearsLeft或this.yearsUntilRetire = yearsLeft();

在第一种情况下,您不能将调用函数的结果设置为不同的结果 - 这是语法错误.

在第二种情况下,您可以 - 它将变量设置yearsUntilRetire为调用函数的结果yearsLeft

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有