1.Object.keys()用法
// Object.keys用于获取对象自身所有的属性名 成员是参数对象自身的(不含继承的)所有可遍历的属性的键名。
## 传入对象,返回属性名
## 传入字符串,返回索引
## 传入数组 返回索引
## 传入构造函数 返回空数组或者属性名
// object.keys(obj)
// 效果类似for...in
// 返回一个由属性名组成的数组
var obj = {
id:1,
pname:'小米',
price:1999,
num:2000
};
var arr = Object.keys(obj);
console.log(arr);
arr.forEach(function (qurrentValue) {
console.log(qurrentValue);
})
//`Object.values`方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历的属性的键值。
//`Object.entries`方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历的属性的键值对数组。
2.vue项目中clone项目,npm i 下载依赖的时候报ERROR 1 的错误,如下代码
npm ERR! code 1 npm ERR! path D:\www\wegrow\node_modules\node-sass npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js npm ERR! Building: C:\Program Files (x86)\nodejs\node.exe D:\www\wegrow\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= npm ERR! gyp info it worked if it ends with ok npm ERR! gyp verb cli [ npm ERR! gyp verb cli 'C:\\Program Files (x86)\\nodejs\\node.exe', npm ERR! gyp verb cli 'D:\\www\\wegrow\\node_modules\\node-gyp\\bin\\node-gyp.js', npm ERR! gyp verb cli 'rebuild', npm ERR! gyp verb cli '--verbose', npm ERR! gyp verb cli '--libsass_ext=', npm ERR! gyp verb cli '--libsass_cflags=', npm ERR! gyp verb cli '--libsass_ldflags=', npm ERR! gyp verb cli '--libsass_library=' npm ERR! gyp verb cli ]
原因是node版本过高,与某个或者部分依赖项不兼容,可以使用nvm管理node版本
3.安装nvm,使用nvm安装node后会出现在cmd中node可识别,npm不可识别的问题,原因在于npm为安装,可以下载与node版本对应的npm
4.获取URL后面的参数,代码如下:
// 利用正则表达式`
let url ="http://www.baidu.com?name=elephant&age=25&sex=male&num=100"
// 返回参数对象`
function queryURLParams(url) {
let pattern = /(\w+)=(\w+)/ig; //定义正则表达式
let parames = {}; // 定义参数对象
url.replace(pattern, ($, $1, $2) => {
parames[$1] = $2;
});
return parames;
}
console.log(queryURLParams(url))
结果如下:
5.es6常用
(1)解构赋值
解构赋值属于浅拷贝!顾名思义,就是先解构,再赋值! 比如先定义一个对象和数组:
var obj = { a: 1, b: 2, c: 3 };
var arr = [1,2,3];
// 在 es6 以前,这样获取属性的值: obj.a; obj.b; arr[i];
// 在 es6 中如下方式获取:
const { a, c } = obj;
const [x, y, z] = arr;
// 很简单就可以获取对象的属性和数组的值,看下编译得过程:
var a = obj.a, c = obj.c;
var arr = [1, 2, 3];
var x = arr[0], y = arr[1], z = arr[2];
(2)Set()
Set()是有序列表的结合,而且是没有重复的,因此Set()对象可以用于数组的去重:
1)[...new Set([1,2,3,1,'a',1,'a'])]
2)Array.from(new Set([1,2,3,1,'a',1,'a'])
(3)## Generator Generator(生成器)是一类特殊的函数,跟普通函数声明时的区别是加了一个*号。
Iterator(迭代器):当我们实例化一个生成器函数之后,这个实例就是一个迭代器。可以通过next()方法去启动生成器以及控制生成器的是否往下执行。
yield/next:这是控制代码执行顺序的一对好基友。 通过yield语句可以在生成器函数内部暂停代码的执行使其挂起,此时生成器函数仍然是运行并且是活跃的,其内部资源都会保留下来,只不过是处在暂停状态。 在迭代器上调用next()方法可以使代码从暂停的位置开始继续往下执行。
// 首先声明一个生成器函数
function *main() {
console.log('starting *main()');
yiled; // 打住,不许往下走了
console.log('continue yield 1');
yield; // 打住,又不许往下走了
console.log('continue yield 2');
}
// 构造处一个迭代器it
let it = main();
// 调用next()启动*main生成器,表示从当前位置开始运行,停在下一个yield处
it.next(); // 输出 starting *main()
// 继续往下走
it.next(); // 输出 continue yield 1
// 再继续往下走
it.next(); // 输出 continue yield 2
6.$.extend()
1.合并多个对象。
这里使用的就是$.extend()的嵌套多个对象的功能。
所谓嵌套多个对象,有点类似于数组的合并的操作。
但是这里是对象。举例说明。
<span style="font-size:18px;">//用法: jQuery.extend(obj1,obj2,obj3,..)
var Css1={size: "10px",style: "oblique"}
var Css2={size: "12px",style: "oblique",weight: "bolder"}
$.jQuery.extend(Css1,Css2)
//结果:Css1的size属性被覆盖,而且继承了Css2的weight属性
// Css1 = {size: "12px",style: "oblique",weight: "bolder"}
</span>
2.深度嵌套对象。
{ name: “John”, location: { city: “Boston” } },
{ last: “Resig”, location: { state: “MA” } }
);
// 结果:
// => { name: “John”, last: “Resig”, location: { state: “MA” } }
// 新的更深入的 .extend()
jQuery.extend( true,
{ name: “John”, location: { city: “Boston” } },
{ last: “Resig”, location: { state: “MA” } }
);
// 结果
// => { name: “John”, last: “Resig”,
// location: { city: “Boston”, state: “MA” } }
</span>
3.可以给jQuery添加静态方法。
<head>
<title></title>
</head>
<body>
<script type="text/javascript" src="jquery.2.0.3.js"></script>
<script type="text/javascript">
$.extend({
add:function(a,b){return a+b;},
minus:function(a,b){return a-b},
multiply:function(a,b){return a*b;},
divide:function(a,b){return Math.floor(a/b);}
});
var sum = $.add(3,5)+$.minus(3,5)+$.multiply(3,5)+$.divide(5,7);
console.log(sum);
</script>
</body>
</html></span>