gpt4 book ai didi

javascript - 为什么这个函数可以工作但仍然返回 typeError ... is not a function?

转载 作者:行者123 更新时间:2023-11-28 20:05:57 26 4
gpt4 key购买 nike

我正在学习js,对一件事感到困惑。我只是从 mdn 复制/粘贴代码示例...

  function Person(gender) {
this.gender = gender;
}

Person.prototype.sayGender = function() {
alert(this.gender);
};

var person1 = new Person('Male');
var genderTeller = person1.sayGender;

person1.sayGender(); // alerts 'Male'
genderTeller(); // alerts undefined
alert(genderTeller === person1.sayGender); // alerts true
alert(genderTeller === Person.prototype.sayGender); // alerts true

在上面的示例中,genderTeller 将返回 undefined,但在第二个示例中稍作修改后:

function Person(gender) {
this.gender = gender;
}

Person.prototype.sayGender = function() {
alert(this.gender);
};

var person1 = new Person('Male');
var genderTeller = person1.sayGender();
genderTeller();

genderTeller 函数实际上可以工作,但也会返回“typeError:genderTeller 不是一个函数”。

为什么在第二个示例中,genderTeller 明确分配给了一个方法,但它不是一个函数?

最佳答案

在第一个示例中,您将一个函数分配给一个变量并执行它。在这种情况下,this 是窗口,因为您只是调用该函数,而不是在任何东西上调用它。

在第二种情况下,您调用该函数并将其结果分配给genderTeller。由于该函数不返回任何内容,因此该变量未定义。

关于javascript - 为什么这个函数可以工作但仍然返回 typeError ... is not a function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20816366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com