オブジェクトとJavaScriptオブジェクトのシリアル化のオブジェクトのラベル

3個のオブジェクトタグがあります:プロト、クラスおよび拡張可能。

A、プロトラベル

例えば、私は、完全なプロトタイプチェーンを形成するように、Person.prototype、のObject.prototype、ヌルに__proto__ポイントのObject.prototypeに__proto__点の次にPerson.prototypeを__proto__を指す新しい人物オブジェクトを作成しました。

二、クラスラベル

グラフ上のポイントは以下のとおりです。

1. Object.prototype.toString.call(O)は、多くの用途に同様に適用され、これが渡されるO)(o.toStringと等価です。

2.slice(8、-1)、(最後の文字が含まれていない)最後の文字に8文字の文字列の切り出しに設計されているXXXので[オブジェクトXXX]を切り出し。

3.typeof新しい番号(1)リターンオブジェクトが、のtoString戻り数、のtoStringより正確な数。(typeof演算はNULLオブジェクトを返し、のtoString nullが返されます。)

三、拡張可能なタグ

 

グラフ上のポイントは以下のとおりです。

1. isExtensible膨張を防ぐためpreventExtensions、元のタグの特性が影響されないオブジェクトのプロパティで、拡張属性か否かを判断します。

2. IsSealedこの時のシール、オブジェクトをシールするために使用されるシール、元のオブジェクトの属性のラベルが使用不能に配置なったか否かを判定する。

3. isFrozenの決意は、この時点では、元のオブジェクト属性のラベル、オブジェクトをフリーズするために使用凍結、凍結されているが、構成書き込み不可となりません。

ラベルの性質4.これらの3つの操作の影響は段階的に深くが、先端部のオブジェクトのプロトタイプチェーン(プロトタイプチェーン)ケースの動作に影響を与えません。

 

次は、標的配列で学びます。

 

グラフ上のポイントは以下のとおりです。

1.オブジェクトが標的配列と呼ばれる文字列になり、キーの標的配列は、中括弧は、対象二重引用符があるの前後に二重引用符、になります。

2.若对象属性为undefined,则序列化后属性便去掉了。若属性值为NaN或Infinity(无穷),则序列化后属性会变为null。若属性值为Date对象,则序列化后会变为UTC格式。

 

上图的要点为:对象内部加上toJSON方法,从而自定义序列化过程。

 

上图的要点为:

1.obj.toString()可直接输出[object Object]字符串,相当于Object.prototype.toString.apply/call(obj)。

2.可在对象内部重写toString和valueOf方法。

3.+obj首先会调用valueOf,看能否变成非对象,若不能,则调用toString,若仍不能转成非对象,则报错。

おすすめ

転載: www.cnblogs.com/luoyihao/p/12231424.html