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

質問編集履歴

1

追記

2019/06/19 13:39

投稿

domidomi
domidomi

スコア34

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,9 @@
1
+ ##※注意
2
+ 通常組み込みオブジェクトの内容を変更することは推奨されておりません。
3
+ 学習用途以外では行わないようにしてくださいませ。
4
+
5
+ ##本文
6
+
1
7
  `Date`クラスについて`chrome`のコンソールを用いていろいろいじってみています。
2
8
  その中でふと`Date`クラスの`constructor`に処理を追加してみようとしました。
3
9
  しかし思ったような挙動になりませんでした。
@@ -42,4 +48,44 @@
42
48
  //Uncaught TypeError: Class constructor Aa cannot be invoked without 'new'
43
49
  ```
44
50
  適当なクラスを作ってコンストラクター関数だけ使用しようとしてみるとエラーとなります。
45
- `ビルトインオブジェクト`故にできない事なのかも?わからないですが・・・
51
+ `ビルトインオブジェクト`故にできない事なのかも?わからないですが・・・
52
+
53
+
54
+ ##追記1
55
+ いろいろお答えいただき本当にありがとうございます。
56
+ 当初私が作ってみたいと思った状況は
57
+ ```javascript
58
+ class Aa extends Date{
59
+ constructor(...arg){
60
+ super(...arg);
61
+ console.log("アベシ");
62
+ }
63
+ };
64
+ Date = Aa;
65
+ new Date()
66
+ // アベシ
67
+ // 22:27:02.908 Wed Jun 19 2019 22:27:02 GMT+0900 (日本標準時)
68
+ ```
69
+ で作ることが出来ました。
70
+ しかし未だ
71
+
72
+ ```javascript
73
+ var itti = Date.prototype.constructor
74
+ var aaa = function(...args){
75
+ itti(...args);
76
+ console.log('abesi');
77
+ }
78
+ Date.prototype.constructor = aaa;
79
+ ```
80
+ を行ってから
81
+ ```javascript
82
+ new Date()
83
+ ```
84
+ を行うとabesiと出てこない事の**理由がわかりません。**
85
+
86
+
87
+ また、私はプログラムについて何か仕事をしているわけでもなんでもなく、
88
+ ただの好奇心からの質問です。混乱させてしまいすみません。
89
+
90
+ 仕事で行う人がいたらかなり危険だとも思いますので、
91
+ もしこの質問の最上に注意を書かせていただきました。