私の目標はmaster_script.jsを作成することです。主に開発で使用するハンドラファイル。
このファイルのサブセクションは、基本オブジェクトのプロトタイプのカスタマイズ専用です。
- 弦
- 番号
- 配列
- 物体
- 日にち
- 関数
- ブール値
だから私は自分のコードブロックを書いている...
/********************************************************/
Object.defineProperty(
Number.prototype,'len',
{get:function(){
str=this.toString()
return str.length
}}
)
/********************************************************/
n=123
o={123:'abc',abc:123}
/********************************************************/
console.log(
'n ⇒ ',n,
'\n n.len ⇒ ',n.len,
'\n n.__proto__ ⇒ ',n.__proto__
)
/********************************************************/
正常に動作します!
- コンソールで展開する
n.__proto__
と、プロパティが表示され、getter functionです。len: (...)
get len: function (){
- コンソールに入力
n.
すると、プロパティ|メソッドのリストにはっきりと表示されます。
o
変数に対して同じ設定を構成すると、問題が発生します。
/********************************************************/
Object.defineProperty(
Number.prototype,'len',
{get:function(){
str=this.toString()
return str.length
}}
)
/******************************/
Object.defineProperty(
Object.prototype,'len',
{get:function(){
cnt=0
for(i in this) cnt++;
return cnt
}}
)
/********************************************************/
n=123
o={123:'abc',abc:123}
/********************************************************/
console.log(
'n ⇒ ',n,
'\n n.len ⇒ ',n.len,
'\n n.__proto__ ⇒ ',n.__proto__
)
/******************************/
console.log(
'o ⇒ ',o,
'\n o.len ⇒ ',o.len,
'\n o.__proto__ ⇒ ',o.__proto__
)
/********************************************************/
最初に気付くのは、コンソールn.
にoro.
を入力すると、プロパティ|メソッドのポップアップ リストにプロパティへの参照が含まれなくなっていることですが、完全な拡張子を入力するか、または orの目的の結果が得られると...len
n.len
o.len
3
2
したがって、コードが正当であることはわかっていますが、7 つの基本オブジェクトのそれぞれに約 40 の異なるプロパティとメソッドがあるため、コンソールポップアップが必要です...
そこで、問題を特定するためのテスト ブロックを作成しました。
/********************************************************/
Object.defineProperty(
Object.prototype,'dis',
{get:function(){return this}}
)
/******************************/
Object.defineProperty(
Number.prototype,'len',
{get:function(){return this.length}}
)
/********************************************************/
o={123:'abc',abc:123}
n=123
e=document.createElement('option')
/********************************************************/
console.log(
'o ⇒ ',o,
'\n o.__proto__ ⇒ ',o.__proto__
)
/******************************/
console.log(
'n ⇒ ',n,
'\n n.__proto__ ⇒ ',n.__proto__
)
/******************************/
console.log(
'e ⇒ ',e,
'\n e.__proto__ ⇒ ',e.__proto__
)
/********************************************************/
.__proto__
のコンソールで を展開した直後に、o
3つすべてに、最初にオブジェクトのみに割り当てようとしたプロパティが与えられていることに気付きましたn
。e
dis
o
それから私はそれをクラックしました:Number.prototype
それ自体はオブジェクトです。したがって、それはdis
からプロパティを継承しますObject.prototype
fromによって継承されずdis
に、オブジェクトのみにプロパティを追加するにはどうすればよいですか?o
n
Object.prototype