alert

深入理解JavaScript系列(14):作用域链(Scope Chain)

给你一囗甜甜゛ 提交于 2020-02-11 04:55:43
前言 在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量、函数声明和函数的形参)作为属性存储在变量对象中。 同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出现在代码执行阶段。 这一章专门讨论与执行上下文直接相关的更多细节,这次我们将提及一个议题——作用域链。 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-4-scope-chain/中文参考:http://www.denisdeng.com/?p=908本文绝大部分内容来自上述地址,仅做少许修改,感谢作者 定义 如果要简要的描述并展示其重点,那么作用域链大多数与内部函数相关。 我们知道,ECMAScript 允许创建内部函数,我们甚至能从父函数中返回这些函数。 var x = 10; function foo() { var y = 20; function bar() { alert(x + y); } return bar; } foo()(); // 30 这样,很明显每个上下文拥有自己的变量对象:对于全局上下文,它是全局对象自身;对于函数,它是活动对象。 作用域链正是内部上下文所有变量对象(包括父变量对象)的列表。此链用来变量查询。即在上面的例子中,“bar”上下文的作用域链包括AO(bar)、AO(foo)和VO

Javascript的this用法

删除回忆录丶 提交于 2020-02-11 04:21:07
this是JavaScript的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在内部使用。比如: 1 function test(){ 2 this.x=1;; 3 } 随着函数使用场合的不同,this的值也会发生变化。但是有一个总的原则,那就是this指的是调用函数的那个对象。下面分四种情况,详细讨论this的用法: 情况一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。 下面这段代码,运行结果是1. 1 function test(){ 2     this.x = 1; 3     alert(this.x); 4   } 5 test(); // 1 为了证明this就是全局对象,我对代码做一些改变: 1 var x = 1; 2function test(){ 3  alert(this.x); 4 } 5 test(); // 1 运行结果还是1。再改变一下: 1 var x = 1; 2 functuon test(){ 3 this.x = 0; 4 } 5 test(); 6 alert(x);//0 情况二:作为对象方法的调用 函数还可以作为某个对象的方法调用,这时this就指这个上级对象。 1 function test(){ 2 alert(this.x); 3 } 4 var o = {}; 5

jquery中this的使用说明

▼魔方 西西 提交于 2020-02-10 09:01:46
在使用jquery操作js时,经常整不明白this与$(this)。抽空仔细测试了一把,记录下来以供在忘记的时候拉出来参考参考! 原来js中的this这么好用 复制代码 代码如下: $(document).ready(function(){   var DragElement=null;   $("#zz").mousedown(function(){   DragElement=this;//这时this指的就是$("#zz")对象   $(document).mousemove(function(){   如果直接$(this).css("left")//由于是在mousemove内,这样this对象就不是$("#zz"),   这时可以用$(DragElement).css("left")//这样取的就是$("#zz") }) }) }) $(this)生成的是什么 $()生成的是什么呢?实际上$()=jquery(),那么也就是说返回的是一个jquery的对象。 题外话:通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context,可以指定context为一个dom元素集或者jquery对象。 那么依照,$()返回的是jquery对象这一结论,我们可以得出$(this

了解Javascript 变量

我的梦境 提交于 2020-02-09 02:12:08
javascript语言变量的作用域可以分为 局部变量 和 全局变量 函数内部定义的变量为局部变量,作用范围在整个函数体内,函数外定义的变量为全局变量,如果在函数内部定义变量时没有使用关键字var,那么该变量默认为全局变量 1.变量必选先定义后使用. //alert(a) //定义之前使用 会提示未定义 var a=23 //使用关键字 var b=34 // 未使用关键字 var 定义 2.同名同作用域的变量,后定定义的变量会覆盖之前定义的变量. var a = 23; var a = 34; //会覆盖之前的定义 3.同名不同作用域的变量,局部变量在其作用范围内会覆盖全局变量 var a = 23 function fn(){ var a = 22; alert(a); } fn(); //显示 22 alert(a); //显示 23 4.全局变量都是windows对象的属性 var x=23; alert(window.x) //显示23 5.没有块作用域,所以应该避免在全局范围内使用for的同时声明变量,否则会导致全局范围的命名污染 for(var i=0;i<5;i++) { } alert(i) // i等于5 来源: https://www.cnblogs.com/answercard/p/3334571.html

this与$(this)的区别

狂风中的少年 提交于 2020-02-07 09:49:14
序言:在使用jquery操作js时,经常整不明白this与$(this)。抽空仔细测试了一把,记录下来以供在忘记的时候拉出来参考参考! $(this)生成的是什么 $()生成的是什么呢?实际上$()=jquery(),那么也就是说返回的是一个jquery的对象。 题外话:通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context,可以指定context为一个dom元素集或者jquery对象。 那么依照,$()返回的是jquery对象这一结论,我们可以得出$(this)得到的是一个jquery对象.我们可以使用万能的alert()方法打印出一个对象: alert($('#btn'));显示的结果: 该图红色框勾选出来的是一个object,不用考虑,该object自然是jquery的对象咯。也即是说我们用通过$('#btn')来调用jquery的方法和属性等。 this代表什么? this,编程的人都知道this表示上下文所处的这个对象,这个自然是不错的,可是这个对象到底是个什么对象呢?加入js里面也有getType的话返回的值会是什么呢?其实js里面不需要使用getType,因为我们有万能的alert.请看看下面的代码: $('#btn').bind("click"

JS中 self = this 的解释

拈花ヽ惹草 提交于 2020-02-07 08:13:14
DEMO 1   function Person(){ this.name = 'hjzgg'; this.age = 24; this.show = function(){ alert(name + " " + age); } } var p = new Person(); p.show();  错误:name 和 age都没有定义. DEMO 2   function Person(){ this.name = 'hjzgg'; this.age = 24; this.show = function(){ alert(this.name + " " + this.age); } } var p = new Person(); p.show(); 正确 DEMO 3   function Person(){ this.name = 'hjzgg'; this.age = 24; this.show = function(){ alert(this.name + " " + this.age); } } var p = new Person(); p.show.call({}); 错误:name 和 age 未定义 DEMO 4   function Person(){ this.name = 'hjzgg'; this.age = 24; var self = this;

Flash水坑钓鱼

╄→гoц情女王★ 提交于 2020-02-07 05:28:19
Flash水坑钓鱼 起因 准备 先配置一个马子吧 自解压捆绑文件的利用 上传到服务器 常见用法 起因 在网络上看到许多大佬都拿这个钓鱼,而且感觉成功率贼高。 未雨绸缪,先测试一下,以后肯定用的到 准备 flash官网的钓鱼源码:https://github.com/r00tSe7en/Fake-flash.cn 一个服务器 一个域名 一个马子 先配置一个马子吧 使用常用的CS吧,随便来一个,成功上线 关于免杀,暂时就不了(因为菜) 推荐使用一个好的隐藏方式 自解压捆绑文件的利用 捆版木马时碰到一个问题大多捆绑软件本身就会被杀软查杀,所以选择利用winrar实现捆绑。 准备好的木马和flash安装程序 鼠标右键,添加到压缩文件。 点击创建自解压格式压缩文件 4. 点击高级自解压选项-------------------常规 使用绝对路径 -- -- -- -- -- -- -- C : \windows\temp 设置---------提取后运行 C : \windows\temp\flash . exe C : \windows\temp\flashplayer_install_cn . exe 安静模式---------全部隐藏 更新 更新方式 -- -- 解压并更新文件 覆盖方式 -- -- 覆盖所有文件 确定,出去把文件名改的像一点 这图标也不像啊,得改 使用

jquery $.trim()方法使用介绍

喜夏-厌秋 提交于 2020-02-07 03:03:53
$.trim(str) 返回:string; 说明:去掉字符串首尾空格。 示例: 先看个错误代码错误代码: 复制代码代码如下: <input type="text" name="" id="results" value=""/> var content = $('#content').val(); if(content.trim() == '') alert('空'); 上面的写法在firefox下不会报错,但在ie下确会报错 所以要写成下面格式: 复制代码代码如下: <input type="text" name="" id="results" value=""/> var content = $('#results').val(); if($.trim(content) == '') alert('空'); 或者 复制代码代码如下: var content = $('#content').val(); if(jQuery.trim(content) == '') alert('空'); $.trim(str) 返回:string; 说明:去掉字符串首尾空格。 示例: 先看个错误代码错误代码: 复制代码代码如下: <input type="text" name="" id="results" value=""/> var content = $('#content').val()

封装Vue组件的一些技巧

*爱你&永不变心* 提交于 2020-02-06 21:10:25
封装Vue组件的一些技巧 本文同步在个人博客 shymean.com 上,欢迎关注 写Vue有很长一段时间了,除了常规的业务开发之外,也应该思考和反思一下封装组件的正确方式。以弹窗组件为例,一种实现是在需要模板中引入需要弹窗展示的组件,然后通过一个flag变量来控制弹窗的组件,在业务代码里面会充斥着冗余的弹窗组件逻辑,十分不优雅。 本文整理了开发Vue组件的一些技巧,包含大量代码示例。 开发环境 vue-cli3 提供了非常方便的功能,可以快速编写一些测试demo,是开发组件必备的环境。下面是安装使用步骤 // 全局安装vue-cli3 npm install -g @vue/cli vue -V // 查看版本是否为3.x // 安装扩展,此后可以快速启动单个vue文件 npm install -g @vue/cli-service-global // 快速启动demo文件 vue serve demo.vue 复制代码 如果需要scss,则还需要在目录下安装sass-loader等。 下面是使用vue-cli3可能会遇见的几个问题,更多使用教程可以参考: 一份超级详细的Vue-cli3.0使用教程[赶紧来试试!] 自定义入口文件 如果需要(比如需要开发移动端的组件),可以在使用 vue serve 时自定义html入口文件,在根目录下编写 index.html ,并确保页面包含

JavaScript 运算符

笑着哭i 提交于 2020-02-06 09:46:13
赋值运算符 赋值运算符用于为变量指定变量值,与 Java、C 类似,JavaScript 也使用“=”作为赋值运算符。 //将变量str 赋值为 JavaScript var str = "JavaScript " ; //将变量 pi 赋值为3.14 var pi= 3. 14 ; //将变量赋值为 true var visited= true ; 除此之外,也可使用赋值运算符将一个变量的值赋给另一个变量。 即如下代码也是正确的 //将变扯 str 赋值为 JavaScript var str = "JavaScript " ; //将变批 str 的值赋给 str2 var str2 = str ; 赋值语句本身是有值的,赋值语句的值就是等号(=)右边被赋的值。 因此 ,赋值运算符支持连续赋值,通过使用多个赋值运算符 ,可以一次为多个变量赋值 ,如下代码 是正确的 //为 b, c,d 赋值,四个变量的值都是 var a= b = c = d = 7 ; //输出四个变量的值 alert ( a + ' \n ' + b + ' \n ' + c + ' \n ' + d ) ; 赋值运算符还可用于将表达式的值赋给变量,如下代码也是正确的: //为变量 x 赋值为 12.34 var x = 12 . 34 ; //将表达式的值赋给y var y= x + 5 ; //输出