Object.keys, in, for in, getOwnPropertyNames区别

操作 返回不可枚举属性 继承的属性 说明
Object.keys() 返回自身可枚举属性列表,继承的和不可枚举的不会返回
in 如果属性可访问就返回 true,不管是自身的还是继承的,也不管是否可枚举
for in 遍历所有可枚举属性,不管是自身的还是继承的,但是不能遍历不可枚举的
getOwnPropertyNames 返回自身的属性列表,不管是否可继承,但是不能列出继承的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function Animal() {}

Animal.prototype.name = "animal";

Animal.prototype.eat = function() {
console.log("Animal eat");
};

Object.defineProperties(Animal.prototype, {
type: {
value: "animal",
enumerable: true
},
fly: {
value: false,
enumerable: false
}
});

function Cat(sex) {
this.sex = sex;
}

Cat.prototype = Animal.prototype;

Cat.prototype.constructor = Animal;

const cat = new Cat(1);

Object.defineProperties(cat, {
age: {
value: 20,
enumerable: false
},
address: {
enumerable: true,
value: "cd"
}
});

// key权限最小,只会返回自身的且可以枚举的属性
console.log(Object.keys(cat)); // [ 'sex', 'address' ]

console.log("==================================");

// in权限最大,可能返回任何属性
console.log(`in sex: ${"sex" in cat}`); // true, 自身的,可枚举
console.log(`in age: ${"age" in cat}`); // true, 自身的,不可枚举
console.log(`in fly: ${"fly" in cat}`); // true, 继承的, 不可枚举
console.log(`in type: ${"type" in cat}`); // true, 继承的,可枚举

console.log("==================================");

// 返回可枚举的属性,不管是自身的还是继承的
// ['sex', 'address', 'name', 'eat', 'type']
for (const key in cat) {
console.log(key);
}

console.log("==================================");

// 返回自身的属性,不返回继承的
console.log(Object.getOwnPropertyNames(cat)); // [ 'sex', 'age', 'address' ]

git和nodejs和windows常用配置

卸载windows 10 自带应用

1
Get-AppxPackage -AllUsers | Remove-AppxPackage

windows添加cmd右键菜单

  1. win + R
  2. regedit
  3. HKEY_CLASSES_ROOT\Directory\Background\shell\cmd
  4. 右键权限 - 高级 - 所有者 - 输入当前用户名 - 检查名称 - 确定 - 确定
  5. Users - 完全控制 - 确定
  6. HideBasedOnVelocityId 重命名为 ShowBasedOnVelocityId

NODE JS

1
2
3
4
npm config set registry https://registry.npm.taobao.org
npm config set sass-binary-site http://npm.taobao.org/mirrors/node-sass
npm i yarn -g
yarn global vue-cli create-react-app http-server browser-sync gulp-cli webpack

GIT

1
2
3
4
5
6
7
8
9
10
11
12
git config --global user.email "719012229@qq.com"
git config --global user.name "taoeer"
git config --global credential.helper store
git config --global alias.pl pull
git config --global alias.ps push
git config --global alias.unstage 'reset HEAD'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.cm commit -m
git config --global alias.br branch
git config --global alias.df diff