经常写js的程序员一定不会对下面这段代码感到陌生. var EventUtil = { addHandler : function(element, type, handler){ if(element.addEventListener){ element.addEventListener(type, handler, false); }else if(element.attachEvent){ element.attachEvent("on"+type,handler); }else…
Chrome的扩展程序可以通过content scripts向页面中注入js代码,所注入的js代码能够对页面中所有的DOM对象进行操作.由于Chrome在js执行环境上对页面代码和content scripts代码进行了隔离,所以,在content scripts中,无法直接修改页面代码执行环境.不过我们还是可以通过一些技巧向页面代码执行环境中插入想要执行的js代码段,从而能够修改页面代码的执行环境. 第一种方法,通过在DOM对象上添加一个event handler,然后派发对应的event给该…
一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); //alert 2 function f(){ alert(2); } 之前一些浏览器会报undefined,不过,目前的版本大多都可以了 3.含参函数倒序 f(2); //alert 2 function f(a){ alert(a); } 目前主流浏览器一样可以正常测试通过 4.声明式函数和赋值式函数 f(); function…
有的网站已经加载了商务通.商桥的,前期定义了js函数 触发商务通.商桥代码的,可以重新定义新的函数对之前的函数进行覆盖,其 js代码为: var domain = document.domain; /*------------------加载快务通链接---------------*/ var kstJS='<script type="text/javascript" src="http://kefu6.kuaishang.cn/bs/ks.j?cI=399142&am…
js的window.onload=function();网页加载完毕时会触发一个onload事件,这个事件与window对象相关联,是让一个函数在网页加载完毕之后得到执行.但是如果有两个韩式firstfunction和secondfunction都想在页面加载时执行,如果把它们逐一绑定到onload事件上,它们当中将只有最后那个才会被执行.由此我们可以得出一个结论:每个时间处理函数只能绑定一个指令. 解决方法一: window.onload=function(){ firstfunction()…
目录 例一 例二 补充 看一道ctf题-----[BJDCTF2020]ZJCTF,不过如此 参考链接 例一 源码: <?php preg_replace('/(.*)/ei', 'strtolower("\\1")', ${phpinfo()}); 我们可以控制第一个和第三个参数,第二个参数固定为 'strtolower("\1")' 字符串. 我们先看第二个参数中的\\1 ,\\1实际上就是 \1,而 \1 在正则表达式中有自己的含义, 反向引用 对一个正…
编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数. 任务 第一步: 编写代码完成一个函数的定义吧. 第二步: 我们来补充函数体中的控制语句,完成函数功能吧. 提示:再想一想,两个整数比较有三种情况,大于,等于或小于,所以我们需要控制语句判断(if...else if). 第三步:  写好的函数,我们就可以任意调用函数了.通过函数调用实现两组数值中,返回较大值吧. <!DOCTYPE HTML> <html > <head> <m…
js 高程 书中原话(斜体表示): 22.1.4 函数绑定 另一个日益流行的高级技巧叫做函数绑定.函数绑定要创建一个函数,可以在特定的this 环境中 以指定参数调用另一个函数.该技巧常常和回调函数与事件处理程序一起使用,以便在将函数作为变量 传递的同时保留代码执行环境.请看以下例子: var handler = { message: "Event handled", handleClick: function(event) { console.log(this); //改编,方便测试…
一个简单的函数绑定 在JavaScript与DOM交互中经常需要使用函数绑定,定义一个函数然后将其绑定到特定DOM元素或集合的某个事件触发程序上,绑定函数经常和回调函数及事件处理程序一起使用,以便把函数作为变量传递的同时保留代码执行环境. <body> <input id="btnTest" type="button" value="Button"/> <script type="text/javascri…
js函数和变量的声明与执行顺序 一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); //alert 2 function f(){ alert(2); } 之前一些浏览器会报undefined,不过,目前的版本大多都可以了 3.含参函数倒序 f(2); //alert 2 function f(a){ alert(a); } 目前主流浏览器一样可以正常测试通过 4.声明式函数和赋值式函…
记一道preg_replace函数/e模式下的代码执行漏洞利用的题. 只有设备维护中心页面可以进入,页面没有什么可点击的,查看源代码,发现这里有个参数. 拼接到url,页面显示index,拼接/etc/passwd. 那么存在文件包含漏洞无疑.通过这个漏洞我们可以结合php伪协议读取到index.php的内容. ?page=php://filter/read=convert.base64-encode/resource=index.php base64解密拿到源码. <?php }} //方便的…
这次说一下对象具体的一个实例:函数,以及其对应的作用域与作用域链.简单的东西大家查下API就行了,这里我更多的是分享自己的理解与技巧.对于作用域和作用域链,相信绝大多数朋友看了我的分享都能基本理解,少数人看完之后再努力思考思考,基本也就懂了.最后说一下,不合理的地方,欢迎批评指正. 函数调用 跳过基本的函数定义,直接说函数调用,js中的函数调用有以下四种方式: 1.直接调用 2.作为对象的方法调用 当作为对象调用时,这里的this指向调用方法的对象,而我们所说的链式调用即是在函数内部作用域的最后…
1.执行环境 JavaScript 代码都是在执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生命周期等方面的处理,它定义了变量或函数是否有权访问其他数据,决定各自行为.每个执行环境都有一个变量对象(我理解为环境变量对象),在代码执行环境中所有的变量.函数都保存在这个对象中: 全局的执行环境是最外围的执行环境,根据ECMAScript 实现所在的宿主环境同,表示执行环境的对象也不一样,在WEB浏览器中,全局执行环境被认为是Windows对象,因此所有…
一  作用域(执行环境) 作用域:定义了变量和函数有权访问的其他数据,决定了他们各自的行为.--------<JS高级程序设计>4.2 好难理解啊~参考了参考尤克希的博客内容,大体上理解了作用域. 作用域:规定了函数和变量的可用的有效的范围.这样的好处是,避免了命名冲突:确定何时销毁他们,释放内存.这个作用域中所有的函数和对象,都保存在变量对象里.每个作用域都有这样一个变量对象.但是我们编写的代码是无法访问到这个对象的,解析器在处理数据时会在后台使用它. 作用域分为两类:全局作用域和函数作用域…
js执行全局代码或者执行函数代码的时候,首先进行准备,然后再执行.准备阶段,就是创建执行环境的阶段. 1.执行环境 当一段js代码遇到解释器的时候,比如浏览器打开一段js代码时候,第一件事并不是马上执行,而是创建执行环境.同样的道理,当调用函数的时候,一开始也是创建执行环境.只有当执行环境创建完成,一切准备就绪,然后才执行函数.可以说,与执行环境的创建相比,最终执行过程只是水到渠成的事,砍柴之前先磨刀. 执行环境有3个属性,所以创建执行环境其实就是分别创建这三个属性. 这三个属性是:作用域链,变…
函数参数 函数的()中指定一个或多个形参(形式参数),多个形参之间用,号隔开,声明形参相当于在函数内部声明了对应的变量,但不赋值.在调用时在()中指定实参  调用时解析器不会检查实参类型.数量,实参可以是任意的数据类型. 函数返回值 使用return来设置函数的返回值,作为函数的执行结果来返回 return后可以跟任意类型的值 语法:return 值 function sum(a,b,c){ var d = a + b + c; return d; } var result = sum(1,2,…
首先讲一讲执行环境: 执行环境按照字面上来理解就是指目前代码执行所在的环境. 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上下文栈(Execution context stack,ECS). 执行环境的分类 全局执行环境: 在浏览器中,其指window对象,是JS代码开始运行时的默认环境. 全局执行环境的变量对象始终都是作用域链中的最后一个对象. 函数执行环境: 当某个函数被调用时,会先创建一个执行环境及相应的作用域链.然后使用arguments和…
什么是函数呢? 对于JS来说,我们可以把函数理解为任意一段代码放在一个盒子里,在我们想要让这段代码执行的时候,直接执行这个盒子里的代码就行.专业一点来讲:js函数就是由事件驱动的可执行课重复只用的代码块. 函数定义 函数定义基本有三种为声明式,赋值式和构造函数式 声明式 使用function关键字去声明一个函数 语法: function fn() { } //这个function就声明了一个名为fn的函数 匿名函数(分为两种情况) 赋值式 // 赋值式的原理和我们使用var关键字是一个道理 //…
js 声明函数是创建函数对象的过程,当创建函数对象时,函数对象的[[scope]] =连当前执行环境对象的作用域(栈顶执行环境--当执行函数时,js会将该函数的执行环境对象入栈) 当为全局函数时,如: function A(){ } A.[[scoope]]=[table]只包含全局对象. 当我们在A中再声明函数时,如: functionA(){ functionB(){ } } A(); 当A(); 执行时,会首先创建一个活动对象,我们设它为o,js会为o创建一个argsments属性,该属性…
1.python pickle反序列化漏洞 自己的理解: 由于在类的__reduce__方法中提供了我们可以自定义程序如何去解序列化的方法,因此如果应用程序接受了不可信任的序列化的数据,那么就可能导致安全问题. import pickle import os class gen(object): def __reduce__(self): s = """dir""" return os.system, (s,) p = gen() payload…
下面的文章内容会根据理解程度不断修正. js变量作用域: 定义:变量在它申明的函数体以及函数体内嵌套的任意函数体内有定义. function AA(){ var bb='我是AA内部变量'; function TT(){ alert(bb); } alert(bb); TT(); } AA(); 如上图,两次弹出的都是“我是AA内部变量”. JS的变量作用域是函数级的,也就是在AA内部申明的变量,在AA内部任意位置,包括它嵌套的函数内也是有定义的. 在函数AA外面,bb就是没有定义的.当然如果去…
最近在重读<javascript高级程序设计3>,觉得应该写一些博客记录一下学习的一些知识,不然都忘光啦.今天要总结的是js执行环境和作用域. 首先来说一下执行环境 一.执行环境 书上概念,执行环境定义了变量或者函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象.环境中定义的所有变量和函数都保存在这个对象中.虽然我们在编写代码的时候无法访问这个对象,但解析器在处理数据时会在后台用到它. 执行环境是一个概念,一种机制,它定义了变量或函数是否有权访问其他数据 在j…
这是大虾的第一篇博文,大虾试图用最直白的语言去描述出所理解的东西,大虾是菜鸟,水平有限,有误的地方希望路过的朋友们务必指正,谢谢大家了. 从读书时代一路走来,大虾在学习的时候逐渐喜欢上了去追寻根源,这个东西到底是为什么?他有什么用处?他解决了什么问题?他是怎么被想到的?从这些问题当中,我们能够学到非常多,大虾深有体会.我相信,即使是这些东西在发明之时,就算是创始人也未必思考的这么周全,很多情况下,它一定是先遇到了什么实际问题之后,再去思考解决方案.也就是说,每一个新知识新东西的提出,一定是为着解…
首先需要明确一个执行环境的概念,执行环境这个概念是用来理解作用域的,在js中,执行环境分为全局执行环境和局部(function)执行环境,而在C#这类的C类语言中,还有一个块级别的执行环境,如if语句.for语句所形成的花括号包围起来的块. 然后就是需要理解一个关键字:var,var这个关键字在js中是用来创建一个局部变量的,使用var创建的局部变量会保存在最接近的作用域中.比如,在function中var person=new Object():就会在函数域中定义一个局部变量,这个局部变量会被…
一.执行环境 执行环境(也叫做执行上下文,Execution Context)是Javascript中最为重要的一个概念.执行环境定义了变量或函数有权访问其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象,执行环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象,但解析器在处理时会在后台使用它. 全局执行环境是最外围的一个执行环境.根据ECMAScript实现所在的宿主环境不同,表示执行环境的对象也不一样.在web浏览器中,全局执行环境被认为是wi…
执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境只能访问全局执行环境的变量和函数,不能直接访问局部环境中的信息:变量的执行环境有助于确定何时应该释放内存.离开作用域的值会被标记为可以回收,将在垃圾收集期间被删除.javascript中有“标记清楚” 和 “引用计数” 两种垃圾收集算法. 执行环境 (execution context) 执行环境是…
× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关于作用域的两种不同翻译而已.但实际上,它们并不相同,却相互纠缠在一起.本文先用一张图开宗明义,然后进行术语的简单解释,最后根据图示内容进行详细说明 图示 查看大图 概念 [作用域] 作用域是一套规则,用于确定在何处以及如何查找标识符.关于LHS查询和RHS查询详见作用域系列第一篇内部原理. 作用域分…
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 作用域.作用域链.执行环境.执行环境栈以及this的概念在javascript中非常重要,本人经常弄混淆,这里梳理一下: 局部作用域函数内部的区域,全局作用域就是window: 作用域链取决于函数被声明时的位置,解析标识符的时候就先找当前作用域,再向外查找,直到全局,这样一个顺序:和函数在哪里调用无关: 执行环境就是函数可访问的数据和变量的集合,也就是函数的作用域链上的所有数据和变量: 执行环境栈就是根…
 壹 ❀ 引 可以说this与闭包.原型链一样,属于JavaScript开发中老生常谈的问题了,百度一搜,this相关的文章铺天盖地.可开发好几年,被几道this题安排明明白白的人应该不在少数(我就是其一).我觉得this概念抽象,变化多端总是让人晕头转向,但平心它并不是有多难,今天我们就从this绑定的五种场景(默认绑定.隐式绑定.显式绑定.new绑定.箭头函数绑定)出发,静下心来好好聊聊这个 this,本文开始.  贰 ❀ this默认绑定 this默认绑定我们可以理解为函数调用时无任何调用…
目录 壹 ❀ 引 贰 ❀ this默认绑定 叁 ❀ this隐式绑定 1.隐式绑定 2.隐式丢失 肆 ❀ this显式绑定 伍 ❀ new绑定 陆 ❀ this绑定优先级 柒 ❀ 箭头函数的this 捌 ❀ 总 壹 ❀ 引 可以说this与闭包.原型链一样,属于JavaScript开发中老生常谈的问题了,百度一搜,this相关的文章铺天盖地.可开发好几年,被几道this题安排明明白白的人应该不在少数(我就是其一).我觉得this概念抽象,变化多端总是让人晕头转向,但平心它并不是有多难,今天我们就…