-
Notifications
You must be signed in to change notification settings - Fork 0
js编码问题
encodeURIComponent使用:http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp
decodeURIComponent使用:http://www.w3school.com.cn/jsref/jsref_decodeURIComponent.asp
js面向对象之公有、私有、静态属性和方法详解:http://www.jb51.net/article/64278.htm
js中call()和apply()方法用法总结
参考:http://blog.csdn.net/ganyingxie123456/article/details/70855586
const {
state = {}, //rootState
plugins = [], // 插件
strict = false //是否严格模式
} = options上面的js语法分析,说白了其实就是一个赋值的逻辑。在options对象中如果存在属性state的对象,那么state就是被覆盖,取后面的数据;反之如果没有那么就是前面大括号里的默认值了。其实这就是一次性定义了多个变量。这就是所谓的结构解析。
结构解析:从数组和对象中提取值对变量进行赋值。变量和赋值的值是一一对应的。
<script>
let [a,b]=[1,2];
console.log(a);//1
console.log(b);//2
let {c=1,d=2}={c:3,d:4};
console.log(c);//3
console.log(d);//4
//一一对应
let [,,g]=[5,6,7];
console.log(g);//7
//这里...i会将后面的所有值当数组一样赋值给i
let [h,...i]=[8,9,10,11];
console.log(h);//8
console.log(i);//9,10,11
</script>在结构解析时,给变量赋值默认值,如果在右侧的数组和对象中有值,就会被重新赋值,否则使用默认值。但是undefined不会覆盖默认值。
//默认赋值
let [j="jiang",k,l="test"]=[,12,undefined];
console.log(j);//jiang
console.log(k);//12
console.log(l);//test在数组解析中都是数组,可迭代的。
只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。
let [m,n,o]=new Set([13,14,15]);
console.log(m);
console.log(n);
console.log(o);
//函数不明白
function* fibs() {
let a=0;
let b=1;
while (true){
yield a;//不明白
[a,b]=[b,a+b];
}
}
let [p,q,w]=fibs();
console.log(w);对象解构:对象解构是不需要一一对应的。
let {name,age}={age:28,name:"jiang"};
console.log(name);
console.log(age);当变量与对象的属性名不一致时:
let {name:person_name,age:person_age}={age:28,name:"jiang"};
console.log(person_name);默认值,这与数组类似。只有对象属性为undefined的,才不会赋值默认值,其他的都会。
let {x=3,y=4}={x:undefined,y:null};
console.log(x);//3
console.log(y);//null当变量与对象的属性名不一致时,赋值:
let {message:msg="hello world"}={};
console.log(msg);对象现有方法的赋值类似对象属性赋值变量。
字符串的解构赋值:类似将字符串分割成数组了。
let [a,b,c]="ABC";
console.log(a);
console.log(b);
console.log(c);字符串属性的解构:类似将字符串当做对象了。
let {length}="ABCD";
console.log(length);函数参数的解构:
function test([x,y]){
return x+y;
}
console.log(test([2,3]));函数参数带默认值:
function test2({x=1,y=0}={}) {
return x+y;
}
console.log(test2());
console.log(test2({x:4}));
console.log(test2({y:4}))下面是函数参数带默认值的错误实例:
function test3({x,y}={x:2,y:3}){
return x+y;
}
console.log(test3());var a=100;
var b=100;
var temp=a;
a=b;
b=a;上面的代码是ES5,目的是交换a和b的值。那么下面用ES6来写。
let x=100;
let y=200;
[x,y]=[y,x];
console.log(x);
console.log(y);看看,只用[x,y]=[y,x];就解决了,是不是更简洁。
无非就是函数返回对象或数组,在将对象或数组解构给变量。
1.参数是有序的。采用数组,在解构给变量。
function test([x,y]){}2.参数是无序的。采用对象,再解构给变量。
function test2({x,y}){}当然,可以将数组和对象封装好了传给函数。
通过解构将一个大的json对象拆分为多个变量或对象。
<script>
let map=new Map();
map.set("id","12");
map.set("name","jiang");
//注意是数组,不要使用对象了
for(let [key,value] of map){
console.log(key);
console.log(value);
}
for(let [key] of map){
console.log(key);
}
for(let [,value] of map){
console.log(value);
}
</script>就是指定引入模块的部分方法等。
其实这些都是使用了,目前的对象解构和数组解构的。
在js文件中,到处模块,如果要到处多个使用export ,使用export default默认是一个文件只导出一个。
ES6规定:var和function声明的全局变量是全局对象的属性;let、const和class声明的全局变量不是全局对象的属性。举个例子:
<script>
var temp="test";
console.log(window.temp);
function testFun(){};
console.log(window.testFun);
let temp1="test";
console.log(window.temp1);
const temp2="temp2";
console.log(window.temp2);
</script>如上面代码后面两个都是undefined,可见在浏览器的全局变量window里没有那两个属性。在nodejs中全局变量是gload。
https://www.cnblogs.com/susanws/p/5717811.html
<form @keydown.enter="searchGraph()">
<input type="search" class="search-input" :style="'width:'+inputSearchWidth" placeholder="图形名称 / 指标ID" v-model="searchText" @focus="searchInputFocus()" @blur="searchInputBlur()"/>
<i class="wbk-ground-img-Search_Dft" @click="searchGraph()"></i>
</form>将input的type设置为search,并且要放在form标签里面。
参考https://www.cnblogs.com/zldream1106/p/mobile_scroll_end.html