我有一個對象作爲參數傳遞給函數。在函數內部,我想給它賦予一個不同的值,但是因爲在函數內部我們只能引用原始對象,所以我們不能用=來簡單賦值。分配給在ES5中作爲參數傳遞的對象
在ES2015我可以用Object.assign
有一種解決方法,我可以在ES5使用,不是複製屬性參考其他?
下面是一個例子https://jsbin.com/wimuvaqosi/1/edit?js,console
var x = {prop:1};
function foo(x1) {
var y = {prop:2};
x1 = y; //this obviously does not work
//x1 = Object.assign(x1, y); //this works only in ES2015
}
foo(x);
console.log("x ", x);
在你的例子中:x1.prop = 2;你可以修改每個對象與另一個對象相等。不需要重新創建一個 –
'Object.assign'不會將'x'分配給不同的對象。它將'y'的所有屬性複製到'x'。 @ baao的回答完全模仿'Object.assign'。 – James