var函数

this的指向总结

匿名 (未验证) 提交于 2019-12-02 23:43:01
// this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象. // 根据函数调用的方式不同,this会指向不同的对象,跟创建方式没有关系. // 1、以函数的形式调用时。this指向的是window function fun() { console.log(this.name) } // fun(); // 2、以方法的形式调用时,this就是调用方法的那个对象 var obj={ name:"小明", aa:fun }; // obj.aa(); // 3、如果不在第一层调用,那么this只会指向当前层 var a={ b:5, c:{ b: 10, d:function () { console.log(this.b) } } }; // a.c.d() // 4、如果将这个方法赋值给变量时,this会改变对象的指向 var n={ name:"狗子", firstname:function () { console.log(this.name) } }; var x={ name:"笨蛋" }; x.firstname=n.firstname; // x.firstname() n.firstname() // 5、在构造函数中,this的指向实例化的对象 var person=function

MVVM,MVC,VUE的基本实现原理

匿名 (未验证) 提交于 2019-12-02 23:43:01
什么是mvvm? m:model 数据层; v:view 视图层; vm:viewModel 视图层跟数据层的连接桥梁 解释:m是后端传过来的数据,v是前端渲染后端数据所看见的页面; vm通过数据绑定来实现数据->视图,视图->数据,vm通过Dom事件监听数据跟视图的变化来实现数据跟视图的更新; 当监听到数据变化的时候,视图层自动更新,当用户操 作视图层的时候,vm监听到视图的变化通知数据更新.实际上就实现了数据的双向绑定. 除此之外,vm层还能跟v层进行相互通信. 如上图所示; 我们可以模拟一下mvvm的基本实现: html: <input type="text" id="input1"/> <span id="span1"></span> js: var m={a:''}; var v={}; var vm={ init(){ input1.onkeyup=function(){ m.a=this.value; vm.observer(m,"a"); } }, observer(obj,attr){ var val=obj[attr]; Object.defineProperty(obj,attr,{ get(){ return val; }, set(v){ input1.value=span1.innerHML=val=v; } }) } }; vm.init();

Web前端易错点总结(三)

匿名 (未验证) 提交于 2019-12-02 23:43:01
1.作用域细节 < script > function fun ( n , o ) { console . log ( o ); return { fun : function ( m ) { return fun ( m , n ) } } } var a = fun ( 0 ); a . fun ( 1 ); a . fun ( 2 ); a . fun ( 3 ); console . log ( "第二次使用" ) var b = fun ( 0 ). fun ( 1 ). fun ( 2 ). fun ( 3 ); var c = fun ( 0 ). fun ( 1 ); c . fun ( 2 ); c . fun ( 3 ); </ script > 2.事件委托(事件代理) 为什么要使用事件委托:在对于多个一样的选项标签,比如li这种,你绑定事件的时候使用循环选取,这个时候后期添加的节点没有在选择之中,那么后期添加的节点是没有绑定上事件。我们通过事件冒泡,事件不直接绑定在li上面,而是后冒泡的父节点里面。这样的好处在于通过后面的父节点获取实时节点绑定改变内容。 < body > < ul id = "uls" > < li class = "li" > 1 </ li > < li class = "li" > 2 </ li > < li class = "li

lodash的debounce函数

匿名 (未验证) 提交于 2019-12-02 23:42:01
先简单介绍一下 debounce ,从最简单的一个场景入手,当用户不断点击页面,短时间内频繁的触法点击事件,只有在用户触法事件后的 n s时间内,没有再触法事件,真正的监听函数才会执行,如果在这段时间内再次触法了事件,就需要重新计算这个 n s。 debounce 最主要的作用是把多个触法事件的操作延迟到最后一次触法执行,在性能上做了一定的优化。 不使用 debounce window.addEventListener('click', function (event) { var p = document.createElement('p') p.innerHTML = 'trigger' document.body.appendChild(p) }) 使用 debounce window.addEventListener('click', debounce(function (event) { var p = document.createElement('p') p.innerHTML = 'trigger' document.body.appendChild(p) return 'aaaa' }, 500)) 更多看这个文章吧 https://segmentfault.com/a/1190000015312430

js 做的随机8位验证码

匿名 (未验证) 提交于 2019-12-02 23:40:02
  开发思路:   画出放置验证码的模块、一个写有“看不清…”的小块,以及输入验证码的文本框   获取各个模块   封装一个函数Yan_ma(),设置验证码为8位,里面含有数字,小写字母,小写字母和中文。每种类型出现的可能性为25%。   随机数字在0-9,之间。对Math.ramand()向下取整。   随机大小写字母使用fromCharCode() 方法:将 Unicode 编码转为一个字符,例如:   var n = String.fromCharCode(65);   cosole.log(n);   //输出j结果为A   大写字母(65-91) 小写字母(97-123)   var s = String.fromCharCode(Math.floor(Math.random() * 26 + 65));   var s = String.fromCharCode(Math.floor(Math.random() * 26 + 97));   随机中文,声明变量letter放置中文字符串,使用charAt()随机在letter中获得某个汉字。   var letter = "如若可以亲爱的请许我青灯墨下执一笔素笺今生为你吟尽千回百转念";   var s = letter.charAt(Math.floor(Math.random() * letter.length));

深入理解 Array.prototype.map()

大憨熊 提交于 2019-12-02 23:24:28
概述:   map()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组,它不会改变原来的数组。    语法:   let newArr = oldArr.map(callback[, thisArg]) 参数:    callback     原数组中的元素调用该方法后返回一个新数组。它接收三个参数,分别为 currentValue、index、array。      currentValue       callback的第一个参数,数组中当前被传递的元素。      index (可选)       callback的第二个参数,数组中当前被传递的元素的索引。      array (可选)       callback的第三个参数,调用map()方法的数组,即原数组。    thisArg(可选)     执行callback函数时this指向的对象。 描述     map()方法会给原数组中的每个元素都按顺序调用一次callback函数。callback每次执行后的返回值组合起来形成一个新的数组。callback函数只会在有值的索引上被调用,那些从来没被赋过值或者使用delete删除的索引则不会被调用。     callback函数会被自动传入三个参数:数组元素、数组元素索引、原数组本身。     如果thisArg参数有值

前端笔试题总结

匿名 (未验证) 提交于 2019-12-02 22:56:40
选择题: 1.jquery ajax中都支持哪些数据类型? text, html, xml, json, jsonp, and script. 2.常见的浏览器端的存储技术有哪些? 浏览器端:cookie、WebStorage(localStorage、sessionStorage)、userData、indexedDB 服务器端:session 3.嵌入在HTML文档中的图像格式可以是? 网页html文档支持的图片格式有jpg , gif , png 和 bmp 这四种,jpg , gif 和 png 格式的图片特点是体积很小,因为在网上很常见,然而 bmp就不常见了,因为这种格式虽然很清晰色彩丰富,但是所占内存很大,所以很少见,但是也是支持的。一共这4种。 4.下面属于CSS3新增属性的有? 1、box-shadow(阴影效果) 2、border-color(为边框设置多种颜色) 3、border-image(图片边框) 4、text-shadow(文本阴影) 5、text-overflow(文本截断) 6、word-wrap(自动换行) 7、border-radius(圆角边框) 8、opacity(透明度) 9、box-sizing(控制盒模型的组成模式) 10、resize(元素缩放) 11、outline(外边框) 12、background-size(指定背景图片尺寸

查询下拉框只显示年份(jquery年份插件)

匿名 (未验证) 提交于 2019-12-02 21:53:52
1 (function(){ 2 $.parser.plugins.push("yearbox");//注册扩展组件 3 $.fn.yearbox = function (options, param) {//定义扩展组件 4 //当options为字符串时,说明执行的是该插件的方法。 5 if (typeof options == "string") { 6 return $.fn.combogrid.apply(this, arguments); 7 } 8 options = options || {}; 9 var currentYear = new Date().getFullYear(); 10 11 //当该组件在一个页面出现多次时,this是一个集合,故需要通过each遍历。 12 return this.each(function () { 13 var jq = $(this); 14 15 //$.fn.combogrid.parseOptions(this)作用是获取页面中的data-options中的配置 16 var opts = $.extend({ 17 minYear: 1900, // 最小年份 18 maxYear: 2099, // 最大年份 19 initYear: currentYear, // 初始年 20 initCount: 10,

z-tree 回显所有选中的id

匿名 (未验证) 提交于 2019-12-02 21:53:52
//回显选择的checkbox函数 function treeHxIdFun(obj) { var objTree = $.fn.zTree.init($("#demo"), setting, nodes); var zTreeObj = $.fn.zTree.getZTreeObj("demo"); var zTree = objTree.getCheckedNodes(false); for(var i = 0; i < obj.length; i++){ zTreeObj.checkNode(zTreeObj.getNodeByParam("id", obj[i])); zTreeObj.selectNode(zTreeObj.getNodeByParam("id", obj[i])); }; }; obj =["34", "3", "34#add"] 数组,id 与树形的所有id 一致 文章来源: z-tree 回显所有选中的id

分析(function(window, undefined) {})(window)

匿名 (未验证) 提交于 2019-12-02 21:53:52
有的时候,我们会在JS框架中看到这行 (function(window, undefined) {})(window) ,它是做什么用的,我们来分析下它 首先这就是一个匿名函数,立即执行它 (function(window, undefined) { // coding })(window) 为这么要这样写,有什么作用 对js进行压缩的时候 均可以替换成其他简写字符,从而减少文件大小,因为他们被视为局部变量使用。 (function(w, u) { // coding })(w) window : 表示 BOM 浏览器对象模型中的 window 对象 undefined: 对于undefined,因为他不是javascript关键字,容易遭到污染。 举个例子 : function foo() { var undefined = 10; alert(undefined); } foo(); // 打印10 再举个例子: var undefined = 10; function foo() { alert(undefined); } foo(); // undefined 为什么又变成undefined了呢 ^(0_0)^ 再来一个 var undefined = 10; function foo() { alert(window.undefined); alert(undefined