为什么不输出?
给定代码中,定义了两个函数 a 和 b:
function a(name, age) { this.name = name; this.age = age; this.say = function() { console.log(age); }; } function b() { this.eat = function() { a.call(b); }; }
然后创建了 b 函数的一个实例 bb,并调用其 eat 方法:
var bb = new b(); bb.eat();
但代码中存在一个问题,导致不会打印任何输出。问题在于,你试图在 a.call(b) 中调用 this.say,但 this 不是指向 a 函数的实例,而是指向 b 函数的实例。这意味着,this.say 引用的是 b 函数的实例中的方法,而不是 a 函数的实例中的方法。
因此,代码实际上是在调用 b 函数的 say 方法,而 b 函数没有这样的方法。这就是为什么代码不会打印任何输出的原因。
以上就是为什么使用 `a.call(b)` 调用 `this.say` 时没有输出?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号