函数内的属性是函数,如何执行它

发布于 2022-09-07 20:24:22 字数 198 浏览 16 评论 0

function animal(){

this.eat = function (){
    console.log('i will eat');
}

}
为什么不能用animal.eat()的方法去执行,而是用var一个实例,去执行。不理解其中原理
animal.eat(); //eat不是一个函数

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

第几種人 2022-09-14 20:24:22

1.animal要运行一次才会执行函数体的内容

2.直接调用animal(),this在浏览器中指向window,在node中指向global

3.因此要向执行eat需要这么写:

animal()

// equal to window.eat() / global.eat()
eat()

4.var一个实例的方法是把animal当做构造器函数使用,new的过程中会执行函数体内容,并返回this,可以这么写:

// this指向cat
var cat = new animal()

cat.eat()
情泪▽动烟 2022-09-14 20:24:22

因为你这个this.eat的this 指向的是window,在非严格的模式下面。所以你animal.eat是报错的。你直接运行eat(),就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文