質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

7218閲覧

Object.assignと同様の動きをするメソッド

coko1

総合スコア276

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/05/08 01:36

Object.assignを使用してオブジェクトをマージするような処理を組んでいるのですが、Object.assignメソッド使用できない環境でObject.assignと同様の処理(オブジェクトのマージ)を行なうにはどのようにすればよいでしょうか?
お力を貸していただけると助かります。

javascript

1if(Object.assign){ 2 //メソッドがある場合 3 var arr = {}; 4 arr = Object.assign(arr, ...sources); 5}else{ 6 //メソッドがない場合 7}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakeoAsai

2017/05/08 01:50

babelでトランスパイルする以外の方法で、ということでしょうか?
coko1

2017/05/08 02:02

そうなります。ご協力お願いします。
guest

回答2

0

ベストアンサー

ページを見てみたのですが、使い方がよくわかりませんでした。

Polyfill となるコードを貼り付ければ、そのまま使えます。
ただ、MDNのPolyfillはES3相当で書き方が古いですね。
for-in + hasOwnProperty ではなく、Object.keys を使用しないと期待通りに動作しないパターンがあります。
http://qiita.com/cocottejs/items/66eef8fef22c0082a15f

Windows Vista(に付属されたIE9)がMSのサポート対象外になった現在では Object.keys を使えないブラウザを考慮する必要はほぼないので Object.keys を積極的に使って良いと思います。
https://www.microsoft.com/japan/msbc/Express/ie_support/

仕様を軽く読んだ限りでは、下記Polyfillが使えそうです。
https://gist.github.com/spiralx/68cf40d7010d829340cb
http://www.ecma-international.org/ecma-262/7.0/#sec-object.assign

Re: coko1 さん

投稿2017/05/08 03:39

think49

総合スコア18164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

polyfillを使うのはダメですか?
Object.assign() - JavaScript | MDN

投稿2017/05/08 02:08

Lhankor_Mhy

総合スコア36115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coko1

2017/05/08 03:15 編集

ページを見てみたのですが、使い方がよくわかりませんでした。 どのように使用すればよいのでしょうか? targetには何を渡せばよいのでしょうか
shinriyo

2018/09/27 09:16

npmを使っていれば楽ですが使ってない場合面倒なので ``` function assign(target, varArgs) { // .length of function is 2 'use strict'; if (target == null) { // TypeError if undefined or null throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1; index < arguments.length; index++) { var nextSource = arguments[index]; if (nextSource != null) { // Skip over if undefined or null for (var nextKey in nextSource) { // Avoid bugs when hasOwnProperty is shadowed if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; }; ``` を定義して ``` assign(arr, ...sources); ``` が楽かもしれないですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問