javascript - 如何断言传递给类构造函数的函数是通过引用传递的,并且在使用组合时不重复?
问题描述
在下面的代码中,我可以轻松断言它zombie
是Zombie
.
当zombie
被创建时,函数bitmapRenderer
被发送给它并成为render()
“Zombie”中的函数。
我假设 asbitmapRenderer
是一个函数,它是一个对象,它是通过引用传递的。我可以创建任意数量的僵尸,并且不再创建任何bitmapRenderer
函数,不会浪费内存,但是我如何通过断言来证明呢?
function bitmapRenderer(drawable) {
console.log('I am bitmapRenderer function', drawable);
}
class Zombie {
constructor(renderer) {
this.renderer = renderer;
this.x = 100;
this.y = 100;
this.name = 'zombie';
}
render() {
this.renderer(this);
}
}
const zombie = new Zombie(bitmapRenderer);
console.assert(zombie instanceof Zombie);
解决方案
只需使用console.log(zombie.renderer === bitmapRenderer);
这证明它们是相同的,因为对象,即使它们具有相同的属性,也将始终被视为不相等,除非它们是相同的引用。
var obj1 = { "a": "A" };
var obj2 = { "a": "A" };
console.log(obj1 === obj2); // false
var obj3 = obj2;
console.log(obj2 === obj3); // true
推荐阅读
- javascript - 在 chrome 上捕获 js 违规
- angular - 谷歌图表 - 列非常薄
- javascript - 如何使用 Intl.NumberFormat 将小数格式化为整数
- node.js - 查找两个文档的日期差异
- javascript - 从数据库加载预选值以进行选择
- python - Python Plotly 静态图像导出(Orca)获取 html 错误 404
- python - sqlite3.OperationalError:没有这样的列
- javascript - 重命名 Javascript 对象中所有属性名称的最快方法是什么?
- swift - 这是为 CAShapeLayer 设置框架的正确方法吗?
- java - 如何从Java中找到第一个字符的反向拆分字符串?