Eki*_*kim 5 javascript function object
是否有一个不是函数的JavaScript对象?
javascript: x=y=z=Object; alert([window.navigator.userAgent,x,y,z].join("\n\n"))
Run Code Online (Sandbox Code Playgroud)
(有一种意见认为x,y,z仅仅是引用在这种情况下Object,也仅仅是一个参考function Object(){ ... },因为Object的值分配给x它们都是'相同’.作为'证据’
javascript:x=Object;x.p=43;alert([x==Object,x===Object,x.p,Object.p])
Run Code Online (Sandbox Code Playgroud)
显示器
true,true,43,43
Run Code Online (Sandbox Code Playgroud)
由于function Thing(){}不x=new Thing()使x对象或一个参考?怎么样new Thing()和Thing?或者y在y=x=new Thing()或y=x=Thing?怎么Thing=function(){}办?区别是没有实际意义的."Everything"(或者它是?)是通过引用调用的,但是可以通过评估字符串来强制逐个调用.所以...)
javascript:
void function(x,y,z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
}(Object,Object,Object)
Run Code Online (Sandbox Code Playgroud)
要么
javascript:
void function(x){ (function (y){ (function (z){
alert( [window.navigator.userAgent,x,y,z].join("\n\n") )
})(y) })(x) }(Object)
Run Code Online (Sandbox Code Playgroud)
(不是没有实际意义 - function必须使用(...)或强制的价值观void.(...)微妙的细微差别:
javascript: /* 43.p gives a runtime error but not ... */
alert([ (43).p=34, 43["q"]=17, (x=43).z="hmmm" ]);
alert([ 43["p"], (43).z, x.p, x["z"], x]);
Run Code Online (Sandbox Code Playgroud)
显示 34,17,hmmm 和 ,,,,43
)
甚至是一个对象数组
javascript:alert([window.navigator.userAgent,Object,Object,Object].join("\n\n"))
Run Code Online (Sandbox Code Playgroud)
得到:
Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.2.3)Gecko/20100423 Ubuntu/10.04(lucid)Firefox/3.6.3
function Object(){[native code]}
function Object(){[native code]}
function Object(){[native code]}
有许多对象不是Object.
正如其中一个答案中所指出的,如果对象被修改,它可能不是它本身.
危险!危险!威尔罗宾逊!
x=y=z=Object=null; alert([window.navigator.userAgent,Object,x,y,z].join("\n\n"));
Run Code Online (Sandbox Code Playgroud)
引用
您没有创建对象,您创建了对Object函数的引用.如果你想要那些是对象,你可以这样做:
x = y = z = {}
Run Code Online (Sandbox Code Playgroud)
然后alert(x)会回来object [Object].
(希望)包含注释 - 默认情况下Object是构造对象的函数.如果你重新分配名称对象(Firefox至少似乎允许我,没有测试过所有浏览器)那么Object将不再是一个函数,它将是你分配给它的任何东西.那么,答案是"不",对象并不总是一个函数,但除非已经明确地重新声明,否则它应该是.据Firebug说:
>>> Object
Object()
>>> Object = {}
Object {}
>>> Object
Object {}
Run Code Online (Sandbox Code Playgroud)
看似可以重新分配.如果有的话,我无法保证会产生什么样的影响.
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |