js基础
小刘今天学前端了吗
这个作者很懒,什么都没留下…
展开
-
前端开发中可能出现内存泄漏的情况总结
同样,添加到DOM元素上的事件监听器,如addEventListener,如果不使用removeEventListener移除不再需要的监听器,也会导致相关对象无法释放。尽管WeakMap和WeakSet中的键是弱引用,不会阻止垃圾回收,但如果它们的值是强引用的对象,且这些对象不再需要时没有从集合中移除,仍然可能导致内存泄漏。如果使用了缓存(如Map、WeakMap等)来存储数据,而没有适当的清理机制,随着时间推移,缓存会不断积累,占用越来越多的内存。全局变量很难被垃圾回收机制自动回收。原创 2024-04-30 09:35:02 · 518 阅读 · 0 评论 -
Angularjs添加video设置动态src
遇到问题:在angularJs中为了避免安全漏洞,一些ng-src或者ng-include都会进行安全校验,因此常常会遇到ng-src无法使用。解决方法:使用$sce服务把地址变成安全的、授权的链接常用方法:$sce.trustAs(type,name);$sce.trustAsHtml(value);$sce.trustAsUrl(value);$sce.trustAsResourceUrl(value);$sce.trustAsJs(value);具体实现:.html<原创 2021-03-19 17:19:56 · 796 阅读 · 0 评论 -
vue+ts+vue-property-decorator报错:Uncaught RangeError: Maximum call stack size exceeded
Vue项目使用ts及插件vue-property-decorator时报错:Uncaught RangeError: Maximum call stack size exceeded出错原因:没有定义组件name解决方法:import { Component, Vue } from "vue-property-decorator";@Component({ name:'MyTable'})export default class Table extends Vue {}...原创 2021-01-11 09:31:45 · 517 阅读 · 0 评论 -
Vue项目ts踩坑之iview
vue项目中使用ts引入iview不能正常显示样式按官网提示导入iview(版本3.1.0)index.tsimport iView from 'iview';import 'iview/dist/styles/iview.css';Vue.use(iView);编译可以通过,如图:js项目中这样的配置显示正常,如图:ts项目中的样式没有起效,如图:...原创 2021-01-04 15:33:22 · 691 阅读 · 0 评论 -
js闭包的应用
防抖function debounce(fn: Function, delay: number) { let timer: number; //借助闭包 return function () { if (timer) { clearTimeout(timer); } timer = setTimeout(fn, delay); }; } function showTop() {原创 2021-03-09 13:30:24 · 90 阅读 · 0 评论 -
ES5类式继承
1. 默认模式function Parent () { this.name = 'p';}Parent.prototype.say = function () { console.log('hello');}function Child () {}Chid.prototype = new Parent();var p = new Parent();var c = new Child();p.hasOwnProperty('name');//truec.hasOwnProperty原创 2021-03-31 15:48:07 · 93 阅读 · 0 评论 -
js代码编写规范
一些js编写规范原创 2021-03-30 15:45:24 · 413 阅读 · 0 评论 -
js中this指向
this指向1. 普通函数this指向window function fn() { console.log(this) }; fn();//window2. 构造函数this指向调用它的实例 function Star() {}; Star.prototype.a = function() { console.log(this)}; var obj = new Star(); obj.a();//obj3. 对象的方法调用var o = { fn: function()原创 2021-01-11 13:45:23 · 108 阅读 · 0 评论 -
webpack打包追加时间戳
iOS始终从缓存中读取同名资源,导致无法加载浏览器中最新版本,所以只要确保每次新打包生成的文件名不同就可以解决。在开发H5时发现由于iOS无法手动清除软件缓存(除非卸载重装),导致新版本上传后页面始终无法更新。在vue.config.js文件中加入以下配置。原创 2022-09-08 17:47:55 · 2160 阅读 · 0 评论 -
框架源码中的小技巧
1.在函数中传入window或this目的:减少作用域链的查询Vue传入this是为了兼容node,node中没有window而是global2.函数中传入undefinedundefined是一个变量,可以进行赋值;null是关键字不能赋值,也不需要查询作用域链3.defineProperty使属性不可更改将属性在原型链直接挂载vue.prototype.$router,属性可以随意修改;使用Object.defineProperty(vue.prototype, "$router", {原创 2021-11-05 08:56:46 · 99 阅读 · 0 评论 -
js函数柯里化
柯里化处理函数function currying(fn) { var store_arg = Array.prototype.slice.call(arguments, 1);//取出参数 return function() { var new_arg = Array.prototype.slice.call(arguments, 0), args = store_arg.concat(new_arg); return fn.apply(null,args); } }柯里化的使用原创 2021-03-31 09:10:02 · 83 阅读 · 0 评论 -
ES5对象
ES5中的继承1. js有两种类型的对象原生的(Native)包括:内置对象(日期Date,数组Array等)、用户自定义对象(var o = {})主机的(Host)包括:windows和DOM对象2. ECMAScript5 特性增加了一些新的内置对象、方法和属性,增加了strict模式...原创 2021-03-30 14:18:59 · 169 阅读 · 0 评论 -
节点的nodeType属性
节点的nodeType属性:数值常量和字符常量节点类型数值常量字符常量Element(元素节点)1ELEMENT_NODEAttr(属性节点)2ATTRBUTE_NODEText(文本节点)3TEXT_NODEComment(注释节点)8COMMNET_NODEDocument(文档节点)9DOCUMENT_NODEDocumentType(文档类型节点)10DOCUMENT_TYPE_NODEDocumentFragmen原创 2021-03-28 17:38:02 · 898 阅读 · 0 评论 -
js检测不同设备的方法
参考:https://blog.51cto.com/antlove/1923385/* 是否是android */ function isAndroid(){ var userAgent = window.navigator.userAgent; if(/android/i.test(userAgent)) { return true; } return false;};/* 是否是IOS */function isIOS(){ var userAgent = window.nav转载 2021-03-25 23:08:54 · 243 阅读 · 0 评论 -
html文件中script标签defer属性和async属性的区别
script标签的使用分三种情况1.没有defer或async属性浏览器会立即加载并执行相应的脚本。也就是说在渲染script标签之后的文档之前,不等待后续加载的文档元素,读到就开始加载和执行,此举会阻塞后续文档的加载。2.async属性如:<script async src="index.js"></script>表示后续文档的加载和渲染与js脚本的加载和执行是并行进行的,即异步执行。3.defer属性如:<script defer src="index.js"原创 2021-03-25 21:02:51 · 292 阅读 · 1 评论 -
js如何区分数组和对象
1.调用constructor{}.constructor //返回object[].constructor //返回Array2.调用instance of[] instance of Array //true{} instance of Array //false3.Object.prototype.toString.call()Object.prototype.toString.call([]) //["object Array"]Object.protot原创 2021-03-25 20:54:47 · 83 阅读 · 0 评论 -
JavaScript内置对象
标准内置对象分类值属性这些全局属性返回一个简单值,这些值没有自己的属性和方法。InfinityNaNundefinedglobalThis函数属性全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。eval()uneval()isFinite()isNaN()parseFloat()parseInt()decodeURI()decodeURIComponent()encodeURI()encodeURIComponent()已废弃es转载 2021-03-25 20:50:06 · 96 阅读 · 0 评论 -
js原型链的理解
1.分清函数和对象function Person() {}var person = new Person();person.name = 'Kevin';console.log(person.name) // KevinPerson 就是一个构造函数,我们使用 new 创建了一个实例对象 person2.prototype每个 函数 都有一个 prototype 属性每一个JavaScript 对象 (null除外)在创建的时候就会关联另一个对象,这个对象就是我们所说的 原型,每一转载 2021-03-23 16:13:55 · 113 阅读 · 0 评论 -
js 遍历方法总结
1、for(可计算长度)例: for(let i=0;i<len;i++){ console.log(arr[i]); }2、forEach(不支持return)例:let arr = [1,2,3,4,5];arr.forEach( (v,i) => { console.log(v,i);},this);第二个参数的用法:3、for in(循环键名,一般用来遍历对象)数组的私有属性也会被遍历,所以一般我们不会用这个方法遍历数组let arr = [1原创 2021-03-23 15:05:12 · 359 阅读 · 0 评论 -
js变量的重复声明
var的重复声明1.使用var语句多次声明一个变量是合法的,不会造成任何错误.2.如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色.3.如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响.例:var a = 100;function fn() {alert(a); //undefined 变量提升var a = 200;alert(a); //200}fn();alert(a); //100var a; //情况3alert(a)原创 2021-03-09 13:20:49 · 1538 阅读 · 0 评论