2022.09.23

71 阅读2分钟

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))

结果如下:

微信截图_20220923165827.png

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>