- 博客(32)
- 收藏
- 关注
原创 eacharts图表
eacharts图表遇到的问题控制台报错:vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in nextTick: "TypeError: Cannot read property 'getAttribute' of undefined"这个问题一般是由于图表挂载的DOM节点没有被渲染,可能是由于该节点使用了v-if进行判断是否进行渲 染,应该改为v-show;具体原因参照v-if与v-show的区别。点击左侧图表时,会触发事件,
2021-09-14 16:48:57 831
原创 vue省市二级联动
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>二级
2021-04-14 21:39:54 910
原创 symbol
新的基本数据类型——symbol当开发时,在构造函数里定义了一个属性,结果二次开发后,在后面又添加属性时,将其覆盖了一个属性不想让在外部使用Symbol(description):里面的参数只是一个标志function F() { this.count = 5;}let f = new F;f.count = 44;//symbol具有全局唯一性//一旦生成就是一个全局唯一性// symbol就是一串特殊的标识,看不到里面长什么样,就是不让你获取它let symbol
2020-12-23 20:24:18 129
原创 iterator
Iteratoriterator遍历器在JS中内置了两种遍历方式for、for...in在ES6中新增了for...of语句,该语句将会根据Iterator的自定义遍历逻辑对数据进行遍历只有在具备遍历器接口的数据上可以使用for…of(数组。类数组对象天生就有遍历器接口)var arr = [1, 2, 3, 4];//遍历数组中的indexfor (var some in arr) { console.log(some);}//遍历数组中的valuefor (var s
2020-12-23 20:22:48 88
原创 class语法
面向对象面向过程var name = "Tom";var age = 13;var gender = "male";var name = "Jerry";var age = 15;var gender = "female";面向对象代码复用,面向对象中类这种技术可以极大的体现代码复用同一类的对象应当由同一种类来生成面向对象实际上就是对问题域进行封装 var o = { name: "Tom", age: 13, gender: "male"
2020-12-23 20:22:11 90
原创 AJAX
AJAX基础原有提交数据方式原有技术提交表单向后端提交数据action后面的地址:访问这个地址,并且还要携带?后面的数据<!-- 如果action里没有地址,表示发给自己 --> <form action="http://127.0.0.1"> <!-- 表单必须要有name属性 用来描述数据的,哪个是密码,哪个是用户名 --> <input type="text" name="username"&
2020-12-23 20:20:45 78
原创 generator
generator必须配合一个关键字yield才能使用generator将一个函数封装成了多个片段,一个yield是一个片段在函数内部只要碰到yield关键字就会停止运行只要在generator实例化对象后面调用next指针就会恢复执行generator是如何向外进行产出的呢?——原理通过yield关键字进行产出先生成一个generator函数generator函数一执行就会生成generator实例化对象(不用new)在generator实例化对象身上调用next().
2020-12-23 20:19:37 92
原创 es6-解构与扩展运算符
对象的新语法糖(属性与方法的简写)箭头函数属性值与属性名相同时直接将成员变量名作为函数名let foo = 66;let o = { foo, //"foo": foo say() { //say: function() {}; }}函数的新语法默认参默认参在不传值以及传入的值是undefined时,会激活默认参function foo(a, b) {
2020-12-23 20:18:26 595
原创 数组、字符串方法总结
数组序号数组的方法参数以及作用返回值1Array.prototype.push(...elements?)向原数组的尾部推入新的元素并返回数组被操作后的长度。破坏性,返回新数组的长度2Array.prototype.pop()无参,将原数组的最后一个元素摘除并返回摘除的元素。破坏性,返回删除的元素3Array.prototype.unshift(...elements?)向原数组的首部推入新的元素并返回数组被操作后的长度。破坏性,返回新数组的长度
2020-11-28 15:35:18 132
原创 省市二级联动下拉框
<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>省市二级联动</title></head><body> <form action
2020-11-26 18:43:29 206
原创 select中的两个属性——selectedIndex、selectedOptions
selectedIndex与selectedOptions这两个属性是在onchange事件函数中被激发的属性,在select下的子节点中点击哪一个,就会被赋值哪一个selectedIndex是点击后获得的下标selectedOptions是点击后获得的HTMLCollection并且只有一个元素,因此要获得点击的option就需要selectedOptions[0]<body> <select name="" id="sel"> <op
2020-11-25 20:39:08 3674
原创 函数里的方法
new.targetfunction F() { //表示函数new了谁,只能在函数内部用,不能在外部用 console.log(new.target); //function F() //判断是普通调用还是通过new调用 console.log(new.target === F);}new F();不用new进行实例化对象不想用new,又想跟new出来一样和Array一样function F(name, age) { //考虑到兼容性
2020-11-10 20:46:16 290
原创 class语法
面向对象面向过程var name = "Tom";var age = 13;var gender = "male";var name = "Jerry";var age = 15;var gender = "female";面向对象代码复用,面向对象中类这种技术可以极大的体现代码复用同一类的对象应当由同一种类来生成面向对象实际上就是对问题域进行封装 var o = { name: "Tom", age: 13, gender: "male"
2020-11-08 21:18:15 160
原创 继承
原型继承不仅继承父类自身有的东西,还继承父类继承的原型代码不是整块封装,有点离散原型继承于原型function Animal () { this.kind= "Animal"; this.say = function(){ console.log("I'm " + this.kind); }}function Cat() { this.name = "cat";}//Cat.prototype.__proto__ = Animal.pr
2020-11-08 21:17:19 681 1
原创 作用域
作用域、闭包、内存泄漏作用域,指的是量起作用的区域 作用分为局部作用域和全局作用域 什么可以创建局部作用域:只有函数 没有声明在函数内部的量都是全局作用域中的量 子作用域可以使用父作用域的量,而父作用域无法使用子作用域的量闭包(如果一个局部作用域在使用变量,局部作用域没有的话,就会冒泡往上层作用域找) 局部(函数)作用域具有封闭性,内部对外封闭 闭包的两个条件: 1.封
2020-10-26 22:25:54 81
原创 函数的创建
函数声明语句//add() //也可在前面调用,函数语句一处声明,处处可调用function add() { var a = 1; var b = 2; console.log(a + b);}add();具名函数声明表达式具名函数的名字将会失效,调用时用变量,函数名用于函数体内部var fn = function add() { var a = 5; var b = 10; console.log(a
2020-10-26 22:25:17 133
原创 对象(1)
对象字面量结构 var o = { "name": "tom", "age": 16, "say": function() { console.log("我叫tom,今年16岁"); } }在js中对象的key都是字符串对象的value可以是任意类型所有的key都是对象的成员变量如果一个key对应的是非函数值,就称为对象属性如果一个key对应的是函数值,就称为对象方法描述符var stu = { name: "to
2020-10-26 22:24:42 85
原创 数据类型
数据类型的分类JS 在ES 5.1中共有六种数据类型:string:字符串类型number:数值类型boolean:布尔类型,发明该类型的人叫布尔,出于纪念和尊敬undefined:undefined类型,该值表示一个量被创建但却没有赋值null:null类型,该值的本质是一个引用地址,但是该引用地址指向一个空值object:对象类型、引用类型ObjectFunctionArrayDateStringNumberBoolean在以上六种类型当中,string、numb
2020-10-26 22:24:06 166
原创 元编程的六个描述符
描述符var stu = { name: "tom", birthday: "1995-08-01", ID: 341226199508011574}Object.defineProperty(stu, "age", { value: 20, configurable: true, //默认是false enumerable: true, //默认是false writable: true //默认是false})de
2020-10-26 22:23:32 118
原创 Math的属性和方法
Math对象的方法序号方法用处1Math.abs(num)绝对值2Math.round(num)四舍五入3Math.floor(num)向下取整,==parseInt4Math.ceil()向上取整5Math.pow(x, y)求x的y次方结果6Math.sqrt(x)开平方7Math.max(...argunments)求最大值8Math.min(...arguments)求最小值9
2020-10-20 18:34:51 249
原创 定时器
延时定时器延时定时器的参数延时定时器:定义一个方法,指定方法在多久后执行 只执行一次// setTimeout(handler, timeout, ...arguments);// handler:回调函数// timeout:多久之后执行回调函数// ...arguments:传入回调函数的参数列表var clock = setTimeout(function(i) { console.log(i);}, 1000, i)//终止定时器,定时器必须有变量名作为定时器的名称
2020-10-17 17:30:15 299
原创 数组的方法
数组的方法序号数组方法方法的作用方法的返回值1arr.push(a, b)数组尾部添加元素,可添加多个,有参数破坏性,返回新数组的length2arr.pop()数组尾部删除元素,只删除一个,无参数破坏性,返回被删除的元素3arr.unshift(a, b)数组首部添加元素,可添加多个,有参数破坏性,返回新数组的length4arr.shift()数组首部删除元素,只能删除一个,无参数破坏性,返回被删除的元素5arr.reverse
2020-10-16 20:30:02 111
原创 Date实例化对象
Date实例化对象Date身上的方法序号方法作用1new Date()默认返回当前时间;里面可以添加字符串时间"2020-1-1" 返回参数时间2Date.now()返回当前时间戳(1970-1-1)3new Date().getTime()返回设置的时间戳,常用语求两个时间之间的长度4new Date().getFullYear()获得new Date()得到的年份5new Date().getMonth()获得new Dat
2020-10-16 19:51:00 819
原创 数组的深拷贝
var arr1 = [2, 55, 88, 99];function deepCopy(base) { var arr2 = []; for (var i = 0; i < base.length; i++) { arr2[i] = arr1[i]; } return arr2; } var result = deepCopy(arr1); console.log(result);//Array(4) [ 2, 55, 88,
2020-09-14 23:31:02 129
原创 数组遍历map的实现
map的遍历与forEach的遍历有所不同,map遍历有返回值,返回值并且在一个新数组中,而forEach并没有返回值var arr = [2, 6, 9];function myMap(array, cb) { var newarr = []; //创建新数组 for (var i = 0; i < array.length; i++) { newarr[i] = cb(arra.
2020-09-01 22:07:14 511
原创 数组遍历forEach的实现
仅将forEach遍历作为函数进行封装 var arr = [1, 6, 9, 8]; function myForEach(array, cb) { for (var i = 0; i < array.length; i++) { cb(array[i], i, array); } } myForEach(arr, function(value, index, array) { console.log(value); consol
2020-09-01 21:53:02 412
原创 多维数组深拷贝
多维数组深拷贝使用递归进行深拷贝 var arr = [55, 66, [99, 66], 100]; function deepCopy (array) { var temp = []; array.forEach(function(value, index){ if(Array.isArray(value)){ temp.push(deepCopy(value)); }else{
2020-08-31 22:37:05 470
原创 强制改变this指向的bind实现
实现部分功能 function bind(f, thisArg) { return function() { thisArg.f = f; thisArg.f(); } } function f() { console.log(this); } bind(f, [1, 2, 3])();实现全部功能的版本function bind (fn, thisArg) { if(typeof thisArg !== "ob
2020-08-31 22:29:58 158
原创 运用call、apply、 bind进行强制改变this的指向
运用call、apply、 bind进行强制改变this的指向改变目标函数内部的this指向并调用该函数call方法强制改变this的指向function f() { console.log(this);}f.call("hello", [55, 66]);没有直接调用f(),经过f.call()调用f函数内部的call方法间接的调用f函数如果给的第一个参数不是对象类型,那么将会将该参数转换为对象——基本包装类型,如果该参数无法转换成,那么该参数无效,之前指向谁,现在仍然指向谁
2020-08-20 17:13:29 193
原创 工厂方法创建函数
反复创建类型相同的对象类型形相同的一个对象反复复制,程序会显得冗杂var o1 = { name: "Tom", age: 16, gender: "男", sayName: function() { console.log(this.name) } };var o2 = { name: "Tim", ag
2020-08-19 19:38:47 223
原创 this关键字
this关键字的理解this 是一个动态指针,它指向一个方法或者函数的调用环境this指向的是一个对象,根据函数调用的方式不同,this会指向不同的对象一个方法点在谁的身上调用,该方法内部的this就指向被点的对象对定义进行解释对象里增加的fun与全局里fun函数等价var name = "Jerry";function fun() { console.log(name);}var o = { name: "Tom", sayName: fun}
2020-08-19 19:00:08 190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人