teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

9

補足

2018/04/13 13:14

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -50,7 +50,7 @@
50
50
  console.log(args);
51
51
 
52
52
  // 呼び出し元に返したいのはこちらの方
53
- //ここでargsを`fn = (xxx) => () => {}`の(xxx)に渡すことは出来ないか?
53
+ //ここで呼び出し元から渡ってくるargsを`fn = (xxx) => () => {}`の(xxx)に渡すことは出来ないか?
54
54
  return fn.bind(obj);
55
55
 
56
56
  }

8

言葉足らずのところをなおしました

2018/04/13 13:14

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -58,11 +58,9 @@
58
58
  })
59
59
 
60
60
 
61
- // 最終的に返ってきているのが関数なのでこうなってしまう
61
+ // 最終的に返ってきているのが関数なのでこうなってしまうし、5も返ってくる関数には渡っていない
62
62
  console.log(obj.func(5)()) // Function
63
63
 
64
- //戻ってきているのが関数なので、こうすれば実行出来るけど上みたいにやりたい
65
- //console.log(obj.func(5)()()) // hi
66
64
  ```
67
65
 
68
66
  1つ目と2つ目のコードをミックスしたのがこの3番目のコードになるのですが、最終的に返す関数にこれだと呼び出し元から引数に渡した値が渡りません。こういう場合、どうすれば呼び出し元から引数に渡した値を、最終的に返したい関数に渡せるのでしょうか?

7

func

2018/04/13 13:12

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -7,22 +7,22 @@
7
7
  ```
8
8
  var obj = {};
9
9
 
10
- Object.defineProperty(obj, 'x', {
10
+ Object.defineProperty(obj, 'func', {
11
11
  get: function() {
12
12
  const fn = (xxx) => () => { console.log('hi') };
13
13
  return fn.bind(obj);
14
14
  }
15
15
  })
16
16
 
17
- console.log(obj.x(5)())
17
+ console.log(obj.func(5)())
18
18
  ```
19
- この場合、`obj.x(5)`としても、この5の値が最終的に返ってくる関数には渡せていません。
19
+ この場合、`obj.func(5)`としても、この5の値が最終的に返ってくる関数には渡せていません。
20
20
 
21
21
  # 引数にはこうすると値が渡せることが分かった
22
22
  ```
23
23
  var obj = {};
24
24
 
25
- Object.defineProperty(obj, 'x', {
25
+ Object.defineProperty(obj, 'func', {
26
26
  get: function() {
27
27
 
28
28
  return function(...args) {
@@ -32,7 +32,7 @@
32
32
  }
33
33
  })
34
34
 
35
- console.log(obj.x(5))
35
+ console.log(obj.func(5))
36
36
  ```
37
37
  getterでメソッド呼び出しする時に引数の値を渡したい場合は、呼び出し元に返す関数の引数に実引数の値が渡ってくるので、それを使えることは分かりました。
38
38
 
@@ -41,7 +41,7 @@
41
41
  ```
42
42
  var obj = {};
43
43
 
44
- Object.defineProperty(obj, 'x', {
44
+ Object.defineProperty(obj, 'func', {
45
45
  get: function() {
46
46
 
47
47
  const fn = (xxx) => () => { console.log('hi') };
@@ -59,10 +59,10 @@
59
59
 
60
60
 
61
61
  // 最終的に返ってきているのが関数なのでこうなってしまう
62
- console.log(obj.x(5)()) // Function
62
+ console.log(obj.func(5)()) // Function
63
63
 
64
64
  //戻ってきているのが関数なので、こうすれば実行出来るけど上みたいにやりたい
65
- //console.log(obj.x(5)()()) // hi
65
+ //console.log(obj.func(5)()()) // hi
66
66
  ```
67
67
 
68
68
  1つ目と2つ目のコードをミックスしたのがこの3番目のコードになるのですが、最終的に返す関数にこれだと呼び出し元から引数に渡した値が渡りません。こういう場合、どうすれば呼び出し元から引数に渡した値を、最終的に返したい関数に渡せるのでしょうか?

6

()が多い理由

2018/04/13 13:08

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -67,6 +67,6 @@
67
67
 
68
68
  1つ目と2つ目のコードをミックスしたのがこの3番目のコードになるのですが、最終的に返す関数にこれだと呼び出し元から引数に渡した値が渡りません。こういう場合、どうすれば呼び出し元から引数に渡した値を、最終的に返したい関数に渡せるのでしょうか?
69
69
 
70
- 実際のコードではObject.defineProperty内でのgetterではなく、ES6 Proxy内でのgetterであったり、generatorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以上のようなコードになっております。
70
+ 実際のコードではObject.defineProperty内でのgetterではなく、ES6 Proxy内でのgetterであったり、generatorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以上のようなコードになっております。()がやたらと多い理由は単にgenerator式をラップしている関数を使っているためです。
71
71
 
72
72
  よろしくお願いいたしますm(_ _)m

5

[5]

2018/04/13 13:05

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
  get: function() {
27
27
 
28
28
  return function(...args) {
29
- console.log(args); //5
29
+ console.log(args); //[5]
30
30
  }
31
31
 
32
32
  }

4

言葉を補いました

2018/04/13 13:00

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -67,6 +67,6 @@
67
67
 
68
68
  1つ目と2つ目のコードをミックスしたのがこの3番目のコードになるのですが、最終的に返す関数にこれだと呼び出し元から引数に渡した値が渡りません。こういう場合、どうすれば呼び出し元から引数に渡した値を、最終的に返したい関数に渡せるのでしょうか?
69
69
 
70
- 実際のコードではproxyでのgetterであったり、generatorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以上のようなコードになっております。
70
+ 実際のコードではObject.defineProperty内でのgetterではなく、ES6 Proxy内でのgetterであったり、generatorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以上のようなコードになっております。
71
71
 
72
72
  よろしくお願いいたしますm(_ _)m

3

修正

2018/04/13 12:58

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,8 @@
1
1
  言葉で説明するのが難しいのですが、getterのメソッド呼び出しで引数に渡る値をgetterの中で返却する別の関数に渡したいです。
2
2
 
3
3
  以下は実際のコードをだいぶ簡略したりしているのでだいぶ意味不明なコードになっていると思いますが、お付き合い頂けると嬉しいです。
4
- 実際のコードではproxyであったりgeneratorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以下のようになっております。
5
4
 
5
+
6
6
  # こんなことをしたいけど引数に値をこれでは渡せない
7
7
  ```
8
8
  var obj = {};
@@ -67,4 +67,6 @@
67
67
 
68
68
  1つ目と2つ目のコードをミックスしたのがこの3番目のコードになるのですが、最終的に返す関数にこれだと呼び出し元から引数に渡した値が渡りません。こういう場合、どうすれば呼び出し元から引数に渡した値を、最終的に返したい関数に渡せるのでしょうか?
69
69
 
70
+ 実際のコードではproxyでのgetterであったり、generatorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以上のようなコードになっております。
71
+
70
72
  よろしくお願いいたしますm(_ _)m

2

補足しました

2018/04/13 12:56

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  言葉で説明するのが難しいのですが、getterのメソッド呼び出しで引数に渡る値をgetterの中で返却する別の関数に渡したいです。
2
2
 
3
3
  以下は実際のコードをだいぶ簡略したりしているのでだいぶ意味不明なコードになっていると思いますが、お付き合い頂けると嬉しいです。
4
+ 実際のコードではproxyであったりgeneratorを使っているのですが、それらを用いないコードに置き換えても質問に影響しなそうだったので、以下のようになっております。
4
5
 
5
6
  # こんなことをしたいけど引数に値をこれでは渡せない
6
7
  ```

1

修正

2018/04/13 12:55

投稿

murabito
murabito

スコア108

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  言葉で説明するのが難しいのですが、getterのメソッド呼び出しで引数に渡る値をgetterの中で返却する別の関数に渡したいです。
2
2
 
3
- 以下は実際のコードをだいぶ簡略したりしているのでだいぶ意味不明なコードになっているのですが、たぶん、質問に支障はなかな思ってす。
3
+ 以下は実際のコードをだいぶ簡略したりしているのでだいぶ意味不明なコードになっていると思いますが、お付き合頂ける嬉しす。
4
4
 
5
5
  # こんなことをしたいけど引数に値をこれでは渡せない
6
6
  ```