感觉老师这里讲的不清除,但是我这里自己梳理了一下,希望能帮到大家
防抖,是利用清除定时器(定时器不清楚的时候判断为真)节流是利用时间差(第一次valid为ture 以下简称为状态和真,我们做第一次判断,真取反是假,就不执行return,执行下一段代码,状态赋值为假,定时器是延迟执行(也就意味着你出连续滚动时第二次的滚动的时候你第一次的定时器还没触发),第二次执行的代码就是拿到 闭包保存的 假 状态 来做判断,当然,这次的判断就会执行return 而return的作用就会让后面的代码不执行,那我们什么时候执行打印呢,就是我们第一次定时器delay延迟事件到了的时候,打印,并且我们才会把 状态 赋值为 真, 这样在下一次执行取反就会回到 状态 真 这样的循环 ( 什么时候循环结束,你不一致滚动滚动条的时候结束 ))
function throttle(fn,delay){ let valid = true return function() { if(!valid){ //休息时间 暂不接客 return false } // 工作时间,执行函数并且在间隔期内把状态位设为无效 valid = false setTimeout(function(){ fn() valid = true; }, delay) } } function showTop () { var scrollTop = document.documentElement.scrollTop; console.log('滚动条位置:' + scrollTop); } window.onscroll = throttle(showTop,300)
效果如下:图一图二 代码如下:( 改变页面布局才发现页面加载问题,代码等下修改lod加载完再调用方法)有个小问题,就是我设置的 图片容器(.box 不是.boximg) 属性为 margin:5px 而不是padding:5px,为什么js里面设置container.style.cssText 的margin0auto 不能居中呀?改成padding就能居中
用column-count呢?然后动态克隆图片
这里答案应该是 == 或者 === 吧,=是赋值呀,if里面是布尔值
是不是可以这么理解:
如果构造函数被定义在局部作用域,外界无法直接重写构造函数或者原型函数,只能通过调用局部作用域暴露出来的实例化对象的constructor方法来重新指向构造函数和原型。
如果我的理解准确的话,那我认为文档中提到的Person.prototype.costructor确实没有用处,因为不能直接访问构造函数也就意味着不能直接访问到原型,因此想要重写构造函数的原型方法只能通过调用实例的constructor来实现也就是person.constructor.prototype
我认为在文档中标明constructor是实例化对象和原型都有的属性比较好
视频17.02的地方如果用:
window.onscroll = function () { var result = debounce(backTop, 300)(); }
的写法防抖依然是失效的
如果想用自调用函数实现防抖是不是只能将debounce的方法直接绑定在onscroll事件上而不是调用debouce函数?
黄色遮罩只能移动一部份区域,放大效果不理想
放大镜.rar
var up = document.querySelector(".up"); var lis = up.querySelectorAll("li"); var down = document.querySelector(".down"); var divs = down.querySelectorAll("div"); up.onmouseenter = function(e){ var li = e.target; var num=0; for(var i=0;i<lis.length;i++){ lis[i].removeAttribute("class") divs[i].removeAttribute("class") if(lis[i]===li) num=i; } li.setAttribute("class","select"); div[num].setAttribute("class","div-select") }
我想问一下这样写为什么不对,我感觉逻辑没错啊,用class为up的来事件代理 li 当触摸 具体的li时触发 用 target来找出谁触发的 先清空属性 在单独加上
老师您好,您演示的代码中,当点击button按钮时,没有正常变成黄色。我去问了Ai,我试了一下,是可以的。
这个是Ai提示的(在 clickBtn 方法里,this 指向的是 Tab 实例,并非被点击的按钮。所以,这里应该把 this.className = "active" 改成 btn.className = "active"。)
clickBtn
this
Tab
this.className = "active"
btn.className = "active"
为什么后续加上waterFlow()就可以让新加载数据实现瀑布流效果呢,waterFlow()不是负责动态内容居中的吗
var arr = "错误这个失败";
if (arr=="错误") {
console.log("处理失败");
}
老师我如果想要这样,这个arr里面只要有“错误”字样,就输出处理失败,我该怎么写呢
var quickSort = function (arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); };
我不理解的是最后面的
return quickSort(left).concat([pivot], quickSort(right));
为什么还要加pivot 根据前面的 if arr[i]<pivot else 可知pivot已经被放在 right中了 再加不久多余了吗,要不就在循环的最开始加上一个条件判断 当下标为
pivotIndex 时就 continue掉
/\bhello/.test("hi,hello"); // true /\bhello/.test("helloworld"); // false /\Bhello/.test("hi,hello"); // false /\Bhello/.test("helloworld"); // true
文档里的好像错了
最后的练习里面第二个参数不就小于第一个参数吗,为什么还能输出
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2026百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637