作者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/m.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