回答編集履歴

1

追記

2015/09/20 10:45

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア36074

test CHANGED
@@ -31,3 +31,57 @@
31
31
  こちらのブログが参考になるかもしれません。
32
32
 
33
33
  [valueOfとtoStringとToPrimitive - os0x.blog ](http://os0x.hatenablog.com/entry/20100916/1284650917)
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+ コメントを受けて追記します。
46
+
47
+
48
+
49
+ > 具体的にはhp={start: 10, glow: 3}というオブジェクトで、ステータスの初期値と成長値をhp.start、hp.glowで取得するようにします。そして、hpとしただけだと、他の変数で管理しているレベルとstartとglowで計算した現在のステータスを表示させるようにしたいです。
50
+
51
+
52
+
53
+ > threeの用にプリミティブ値を自分で作れればできるのではないかなと思いました。Number.prototypeに追加すると他の部分数値を扱うところにも影響が出てしまうので、何か別の方法が見つかれば幸いです。
54
+
55
+
56
+
57
+ それは無理かと思います。
58
+
59
+ たとえば、
60
+
61
+ ```javascript
62
+
63
+ (1).toString(); // "1"
64
+
65
+ ```
66
+
67
+ このような結果のため、1 というプリミティブに toString メソッドが存在するかのように見えますが、仕様を見ますと分かりますとおり、プリミティブに対する[[Get]]内部メソッドの処理の1番目に、
68
+
69
+ > Let O be ToObject(base)
70
+
71
+ [http://www.ecma-international.org/ecma-262/5.1/#sec-8.7.1](http://www.ecma-international.org/ecma-262/5.1/#sec-8.7.1)
72
+
73
+ とありますから、実際にはNumberオブジェクトに型キャストされているのだと思います。
74
+
75
+
76
+
77
+ つまり、プリミティブな 3 を取り扱いたいならそれはNumberオブジェクトではありませんからプロパティやメソッドを持てず、逆にプロパティやメソッドを持っているならそれはプリミティブではない、と考えていいのだと思うのです。
78
+
79
+
80
+
81
+
82
+
83
+ こちらのブログが参考になるかもしれません。
84
+
85
+ [プリミティブはオブジェクトじゃないし、プリミティブと参照なんて区別はない - uokumura’s diary](http://uokumura.hatenablog.com/entry/20090614/1245016857)
86
+
87
+