作者folio (function(){})()
看板Ajax
标题Re: [问题] 为何FF无法藉由new Function()传递事件?
时间Sun Jan 20 16:31:50 2013
※ 引述《StarTouching (抚星)》之铭言:
: 虽然如此 我想 new Function 还是有它派上用场的时候。
: 拿我这次写的东西举例:
:
: function foo(obj, css1, value1, css2, value2)
: {
: var f = new Function("obj", "v", "obj.style." + css1 + "= v");
: f(obj, value1);
: f = new Function("obj", "v", "obj.style." + css2 + "= v");
: f(obj, value2)
: }
你可以写成这样:
function foo(obj, css1, value1, css2, value2)
{
var f
f = function(obj, v)
{
obj.style[css1] = v
}
f(obj, value1)
f= function(obj, v)
{
obj.style[css2] = v
}
f(obj, value2)
}
: 我个人猜想 jQuery可能也是用类似方法实作的。
你是指 selector 吗?像是 $("#id > .class [name]")?jQuery 是丢给 Sizzle 处理。
jQuery
https://github.com/jquery/jquery/blob/master/src/core.js#L36
jQuery.fn.init
https://github.com/jquery/jquery/blob/master/src/core.js#L75
rootjQuery
https://github.com/jquery/jquery/blob/master/src/core.js#L808
jQuery().find
https://github.com/jquery/jquery/blob/master/src/sizzle-jquery.js#L3
Sizzle
https://github.com/jquery/sizzle/blob/master/sizzle.js#L205
Function 跟 eval 适合用在 evaluate script 的时候,例如 ajax 拿到 JavaScript,
或 user 输入的 JavaScript。前者例如 jQuery.getScript 後者例如 browser 的 console。
Function 跟 eval 有些微差别,不过我现在要去大便,之後再说或者等别人说。
: 至於injection漏洞问题 这我确实就不太明白了。
: 请问可以举个例子吗?
: 这样以後也好避免。
http://stackoverflow.com/search?q=javascript+eval+injection
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.46.219