js

解决掉你心中 js function与Function的关系的疑问

雨燕双飞 提交于 2020-02-27 08:39:47
前言 在网上有很多关于js function 与 Function直接关系的文章。 但是我感觉过于抽象化了,那么如何是具体化的解释? 正文部分为个人理解部分,如有不对望指出。 正文 <script> if((function(){}).constructor === Function) { console.log(true); } </script> 我写了一段这个代码,答案为true。 这就是function 与 Function的关系。 看下Function的定义: Function 构造函数创建一个新的 Function 对象。直接调用此构造函数可用动态创建函数,但会遭遇来自 eval 的安全问题和相对较小的性能问题。然而,与 eval 不同的是,Function 构造函数只在全局作用域中运行。 然后还给出了这样一个结论: 每个 JavaScript 函数实际上都是一个 Function 对象。 重新理解一下,Function的定义。 第一句话很好理解,就是可以创建一个Function对象。第二句好也好理解,就是会有安全漏洞和性能问题,详细部分可看eval的安全问题,至于为什么低效,官方解释是:因为使用后者创建的函数是跟其他代码一起解析的。 第三句话,什么叫"Function 构造函数只在全局作用域中运行"? var func = new Function("alert(x

js基础知识点

我们两清 提交于 2020-02-27 07:11:13
1. 变量声明: var 变量名; J avaScript基础数据类型 包括原始类型和引用类型 原始类型有5个: Number(数值) String(字符串) Boolean(布尔) Null(空) Undefined(未定义) 引用类型有1个: Object(对象) 通过typeof(x)可以返回一个变量x的数据类型; 注意一点:typeof运算符对于null类型返回的是object 2.函数 1.函数:函数就是可以重复执行的代码块。 2.语法:function 函数(){} 3.调用:函数定义了,一定要调用 4.形参,实参,实参写在调用函数的括号里,实参写在定义函数括号里 5,返回值 return 返回值返回了要接收,接受的是调用函数。 6,Js不能重载(就是两个函数名相同,下面的函数会把上面的函数覆盖) 7.匿名函数 function(){} 没有函数名,一般要与变量或者事件结合起来使用 8.作用域:全局变量,局部变量。 局部变量只能在函数内部使用。代码执行完,定义的变量也就消失了。 全局变量可以在任何地方使用。 3.循环 ① while循环 while用于循环作用基本一致,通常用来循环数组 语法:while(条件){循环体} ②  do while循环,do while 是while的一个亲戚,它在循环开始前先执行一次操作,然后才进行判断,true就继续执行

js事件对象

独自空忆成欢 提交于 2020-02-27 07:02:14
Evernote Export js事件对象 在DOM元素触发事件时,事件处理函数中会产生的一个事件对象event。 事件对象获取方法 所有浏览器都支持event对象,只是支持的方式不一样 FireFox、Chrome等浏览器要获取到event对象,需要从函数中传入,参数名随意 而IE在浏览器中event作为window对象的一个属性存在,可以直接使用 event 或 window.event 获取到 //事件对象获取方法 document .onkeydown = function ( ev ) { //onkeydown 事件会在用户按下个键盘按键时发生 var e = ev || event ; //兼容各个浏览器 console .log(e); } 事件对象中与鼠标/键盘相关属性 clientX/clientY属性:返回当事件被触发时,鼠标指针的坐标(到浏览器窗口的坐标) offsetX/offsetY属性:返回当事件被触发时,鼠标指针的坐标(在事件源元素中的坐标) pageX/pageY属性:返回当事件被触发时,鼠标指针的坐标(整个页面中的坐标) button属性:返回触发事件的鼠标按键 which属性:返回触发事件的按键码(针对键盘和鼠标事件) IE678不支持 keyCode属性:返回键盘按键的按键码 组合键:ctrlKey、altKey、shiftKey

微信公众号爬虫技术分享

…衆ロ難τιáo~ 提交于 2020-02-27 06:50:29
采集方案分析对比 目前主流的抓取公众号文章及动态信息不同采集方案对比如下: 由上图可知: 如果需要长期监控公众号实时的文章,我推荐使用逆向的方式; 如果要做获取文章阅读点赞评论量或搜狗微信转永久链接等接口,推荐使用万能key的方式; 至于中间人的方式,技术门槛低,开发周期短,如果要监控的公众号不多,且实效性要求不那么高,我推荐使用这种方式。 下面将详细介绍基于中间人方式采集的原理 采集方案详解 基于中间人方式 采集原理 中间人好比中介,这里指抓包工具,大致的原理图如下 微信客户端之所以可以看到文章信息,是因为请求了微信的服务器,服务器收到请求后,将对应的文章返给客户端。这里我们通过抓包工具(中间人)拦截数据,将拦截到的文章数据解析入库,就完成了一次简单的数据抓取。 那么如何实现多个文章自动抓取,及列表页自动翻页呢。总不能人肉去点吧。那么最先想到的是自动化工具,比如大家都知道的按键精灵。但是这种自动化工具如何与抓包工具交互,是个问题。我们要保证在数据被拦截入库之后,再去点击下一个抓取的目标,又或者当网络异常时,自动化工具如何检测出来,然后重刷当前页面,发起请求。即使可以实现,应该也很麻烦,所以没采用这种方法。本人也不喜欢自动化工具,总感觉它不稳定。。。 既然微信文章界面是html的,我们可以嵌入js嘛,让他自动跳转。那么如何在文章和源代码里嵌入自己的js呢?这时中间人就派上用场了

H5与Native交互之JSBridge技术

谁说胖子不能爱 提交于 2020-02-27 06:17:55
一、原理篇 下面分别介绍IOS和Android与Javascript的底层交互原理 IOS 在讲解原理之前,首先来了解下iOS的UIWebView组件,先来看一下苹果官方的介绍: You can use the UIWebView class to embed web content in your application. To do so, you simply create a UIWebView object, attach it to a window, and send it a request to load web content. You can also use this class to move back and forward in the history of webpages, and you can even set some web content properties programmatically. 上面的意思是说UIWebView是一个可加载网页的对象,它有浏览记录功能,且对加载的网页内容是可编程的。说白了UIWebView有类似浏览器的功能,我们使用可以它来打开页面,并做一些定制化的功能,如可以让js调某个方法可以取到手机的GPS信息。 但需要注意的是,Safari浏览器使用的浏览器控件和UIwebView组件并不是同一个

JS保留两位小数

纵然是瞬间 提交于 2020-02-27 06:00:53
四舍五入 以下处理结果会四舍五入: var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入 以下处理结果不会四舍五入: 第一种,先把小数边整数: Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77 第二种,当作字符串,使用正则匹配: Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000 **注意:**如果是负数,请先转换为正数再计算,最后转回负数 来源: oschina 链接: https://my.oschina.net/miaojiangmin/blog/3160178

JS语言里的 if 语句的运用

谁说胖子不能爱 提交于 2020-02-27 04:38:04
需要注意的点: 1.拼接只对于字符串; 2.等于用==表示; 3.先定义,后赋值,var a=10; 如果定义小数或整数的变量,等号后面的值直接写。 4.所有字符全部是英文半角的 5.>=大于等于;<=小于等于; 6.JS语言在html中位置有三块,但为了保险起见,一般都是放在</html>之后。 <script type="text-Javascript">代码放在里面</script> <script src="">外部样式 7.语句顺序,结束要加; 8./代表除,%代表余数 9.//注释一行;/*注释多行*/ 10.三元运算符:var l = a = b?"相等":"不等于" alert(l); 条件?“正确返回的内容”:“错误返回的内容” 例题: 输入三个整数,x,y,z,最终以从小到大的方式输出。      var x = prompt( '输入x',"x"); var y = prompt( '输入y',"y"); var z = prompt( '输入z',"z"); x=parseInt(x);y=parseInt(y);z=parseInt(z); if( x>y&&y>z) { alert( z+","+y+","+x); } else if(x>z&&z>y) { alert(y+","+z+","+x); } else if( y>x&&x>z) {

js面试题-02

百般思念 提交于 2020-02-27 04:08:28
1,webpack工程构建工具怎么样用 答:webpack是一款模块打包器,可以将项目中的js,css,less,sass,图片等打包压缩成对应的文件。通过定义一个入口文件,webpack会自动查找相关依赖的文件,使用loaders处理它们,最终生成浏览器能识别的js文件。 npm或cnpm安装webpack后,再配置webpack.config.js,入口文件、出口文件、loaders加载器、插件;然后执行对应的命令来进行项目启动或者线上打包。 2,数组去重 答:01,es6的set方法 var arr=[3,90,1,30,3,1]; var arrs=new Set(arr); var news=Array.from(arrs);//或者 var news=[...arrs]; console.log(news); 02,简单的indexof方法,for循环判断不存在一样的话就存在一个空数组中; 03,遍历foreach数组,使用标识符来判断去重; 3,HTTP状态码 答:2开头的一般指的是成功;3开头的一般是重定向;4开头的一般是请求失败,服务器无法做出对应处理回应;5开头的一般是服务器端的错误。 4,为什么css样式初始化,目的是为了什么 答:统一不同浏览器的css样式渲染差异化,避免出现首次打开浏览时样式错乱。 5,为什么浏览器会产生同源策略 答:主要是为了安全考虑

通过js获取DropDownList的选中项

耗尽温柔 提交于 2020-02-27 03:52:36
1 <html xmlns="http://www.w3.org/1999/xhtml"> 2 <head runat="server"> 3 <title></title> 4 <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 5 <script type="text/javascript"> 6 $(document).ready(function () { 7 //写法1 8 //var ddl = document.getElementById("<%=ddlDept.ClientID %>"); 9 //写法2 10 //var ddl=$("#<%=ddlDept.ClientID%>"); 11 alert(ddl.selectedIndex); 12 }); 13 14 15 function show(obj) { 16 var v = $(obj).val(); 17 alert(v); 18 } 19 </script> 20 </head> 21 <body> 22 <form id="form1" runat="server"> 23 <div> 24 <asp:DropDownList runat="server" ID="ddlDept"

JS动态控制tr的显示和隐藏

喜你入骨 提交于 2020-02-27 01:38:34
转载自: https://blog.csdn.net/weixin_41725862/article/details/88964551 方法一: document.getElementById( "控件ID ").style.visibility= "hidden "; document.getElementById( "控件ID ").style.visibility= "visible "; 方法二: document.getElementById( "控件ID ").style.display= "none "; document.getElementById( "控件ID ").style.display= "inline "; 方法一隐藏后 页面的位置还被控件占用 只是不显示 方法二隐藏后 页面的位置不被占用 来源: CSDN 作者: KitonGao 链接: https://blog.csdn.net/qq_33146717/article/details/104518497