【发布时间】:2021-10-28 00:00:32
【问题描述】:
我知道使用Function.prototype.call() 我们可以编写一个可用于不同对象的方法。
我试图理解https://cdn.jsdelivr.net/npm/@mediapipe/control_utils/control_utils.js 的源代码,它的结构是这样的。我需要取消缩小才能看到这段代码。
(function () {
// code
// code
}.call(this));
这个模块越来越像
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/camera_utils/camera_utils.js" crossorigin="anonymous"></script>
</head>
<body>
<video class="input_video"></video>
</body>
</html>
<script>
const videoElement = document.getElementsByClassName('input_video')[0];
const camera = new Camera(videoElement, {
onFrame: async () => {
await someMethod({image: videoElement});
},
width: 320,
height: 240
});
camera.start();
</script>
但是像 (function () { // code; }.call(this)); 这样的声明在 JavaScript 模块中的目的是什么,所以 const camera = new Camera(arg1, arg2); camera.start(); 正在工作?
【问题讨论】:
-
这看起来像是另一种使用 IIFE 的方式。
-
那是用来不污染全局范围的
Camera内部的东西。
标签: javascript html npm minifiedjs function.prototype