节点JavaScript上下文共享内置原型?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了节点JavaScript上下文共享内置原型?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含999字,纯文字阅读大概需要2分钟。
内容图文
![节点JavaScript上下文共享内置原型?](/upload/InfoBanner/zyjiaocheng/748/33093f905829464896f52bee8363d9ab.jpg)
使用Node的vm.runInNewContext创建新上下文时,内置(对象,函数等)原型是否共享?
runInNewContext上的文档说:
Running
code
does not have access to local scope and the objectsandbox
will be used as the global object forcode
.
Object.prototype是否在全局范围内,因此不共享?
在node_script.cc:338-345和node_script.cc:403-409中,我看到它引用了这些对象,所以这些对象来自沙箱,使用调用vm.runInNewContext的父上下文的Object.prototype和在其中创建的对象.使用不同的Object.prototype的新上下文?
(注意:vm模块是一个迷宫:vm模块 – > evals process.binding – > node_script.cc源码)
解决方法:
据我所知,代码是在一个全新的上下文中运行的,具有Object,Array等不同的全局构造函数.
Object.prototype.a = function() { console.log('hello'); };
({}).a(); // 'hello'
require('vm').runInNewContext('({}).a();'); // should throw
如果Object :: a可以访问原始上下文中的变量,我认为它不会是一个新的上下文.
这有一些影响:
vm.runInNewContext('[];') instanceof Array; // returns false
因为该数组是使用完全不同的构造函数创建的,所以instanceof运算符将受到影响.
内容总结
以上是互联网集市为您收集整理的节点JavaScript上下文共享内置原型?全部内容,希望文章能够帮你解决节点JavaScript上下文共享内置原型?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。