#关于浅拷贝的问题
不是说浅拷贝只是拷贝对象或数组的引用,原始对象或数组中的某个属性被修改了,数组引用该属性的拷贝也会被修改。
为什么下面的浅拷贝却修改不了原对象属性?
var obj = {
name: "aaa",
value: "JS",
};
var n1 = Object.assign({}, obj)
n1.name = 'bbb'
console.log(obj);//{name: 'aaa', value: 'JS'}
浅拷贝是对对象作为属性嵌套而言的,字符串是只读的,n1.name = 'bbb'并不改变name原来指向的aaa的内容,而是指向了另一个内容bbb,所以原来的不变。
语法 :
Object.keys(obj)
描述 :
参数 | 描述 |
obj | 要返回其可枚举和不可枚举属性的对象。 |
示例 :
let arr = ['a', 'b', 'c'];
console.log(Object.getOwnPropertyNames(arr)); // ['0', '1', '2', 'length']
let obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.getOwnPropertyNames(obj)); // ['0', '1', '2']
let obj = { firstName: 'a', lastName: 'b' };
console.log(Object.getOwnPropertyNames(obj)); // ['firstName', 'lastName']