需要创建一个函数,该函数接受一个对象并为其创建对象副本,但不复制输入对象的深层属性。
var obj = {foo : 'Bar'};
var cloneObj = getClone(obj); // getClone is the function which you have to write
console.log(cloneObj === getClone(obj)); // this should return false
console.log(cloneObj == getClone(obj)); // this should return true
答案 0 :(得分:0)
您问的内容在JavaScript中是不可能的。
当==
的操作数是同一类型(在这种情况下,它们都是对象)时,==
和===
的作用完全相同。根据规范的Abtract Equality Comparison algorithm:
比较
x == y
,其中x and
yare values, produces
为真or
为假`。这样的比较如下:
- 的结果
如果Type(x)与Type(y)相同,则
a)返回执行严格平等比较
x === y
...
您可以使用Object.assign
将对象的属性¹复制到新对象中:
clonedObj = Object.assign({}, obj);
...或在ES2018 +中传播财产:
clonedObj = {...obj};
...但是在两种情况下,===
和==
的对象都是不相等的。
¹具体来说,它是自己的,可枚举的;不能继承或不可枚举。 (也可以使用Object.assign
或...
来做到这一点。)