作者mrbigmouth (大嘴先生)
看板Ajax
标题Re: [问题] 要怎麽取得所有的物件?
时间Wed May 20 16:23:32 2015
※ 引述《LaPass (LaPass)》之铭言:
: 就一般网页上而言
: 我们知道有 window 这个物件可以用
: 然後可以对一些网页视窗做操作
: 其他还有 document 等等
: 另外一种是已经存在的 function
: 像是 alert()
: 以及一些语言内建的物件
: 像是 Date JSON等等
: 请问有办法「用程式」把现在的执行域下,可用的东西通通都列举出来吗?
: 因为环境不一定是在网页上
: 也有可能是在node.js
: 甚至是java的 Rhino
: 我想知道到底有哪些变数、function、物件可以用
(function(global) {
var i;
for (i in global) {
console.log(i+":");
console.dir(global[i]);
}
}(this))
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.162.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1432110214.A.B02.html
※ 编辑: mrbigmouth (220.130.162.20), 05/20/2015 16:30:00
1F:→ mmis1000: 你根本找不到function scope的那个 "global" 05/20 17:19
2F:→ mmis1000: 只有跑在global下的code能这样用 05/20 17:20
如果你无法肯定你的code是不是跑在global下可以用下面这方法
虽然通常不建议使用这类eval的code
(function(global) {
var i;
for (i in global) {
console.log(i+":");
console.dir(global[i]);
}
}((new Function("return this;"))());
3F:推 LaPass: 咦?虽然我记得有的JS引擎可以锁global下的this,让他变成 05/20 17:41
4F:→ LaPass: null,但应该可以玩玩看 =V= 05/20 17:42
5F:推 LaPass: global = {} QAQ 05/20 17:46
6F:→ LaPass: 环境是node.js 05/20 17:46
※ 编辑: mrbigmouth (220.130.162.20), 05/20/2015 18:03:05
※ 编辑: mrbigmouth (220.130.162.20), 05/20/2015 18:03:23
7F:推 LaPass: 少一个括号。 05/20 18:13
8F:→ LaPass: 我试成功了,这就是我要的结果 XD 05/20 18:14