Posted at

オブジェクト配列の値渡し(extend on NodeJS)

More than 1 year has passed since last update.


一次元配列の値渡し

Array.slice()かArray.concat()を使えばよい。

JavaScriptで配列のコピー(値渡し)

ただし、値渡しできるのは文字列数値のみ。

オブジェクトはできない

Array.prototype.slice()



  • もし参照されたオブジェクトが修正されたら、その変更は新しい配列と元の配列の両方に現れます。

  • 文字列や数値 (String オブジェクトや Number オブジェクトではなく) については、slice は文字列や数値を新しい配列にコピーします。一方の配列の文字列や数値に変更を加えても、他方の配列に影響はしません。



オブジェクト配列はどうする?

JavaScriptのオブジェクトを扱うとき、=はただの値渡しではない


オブジェクトの場合、値渡しされるのはポインタ(参照の値渡し)。


  • Jqueryの$.extend()を使う



NodeJSではjquery.extend()は使えない

$ npm install jquery

var $ = require('jquery')

$.extend({},object)

NodeJSで使おうとすると、

extend is not a functionと怒られる。


Node.jsで$.extendを使いたい!!!

$ npm install extend

var extend = require('extend')

//targetObjectにobject1,object2をマージするやり方
extend(targetObject, object1, object2);

//新規にオブジェクトを生成したいときは空のオブジェクトにマージする
extend( {},{値渡ししたいオブジェクト} )

GitHub