jsの各種データの型を判定するtypeofとobject.prototype.toStringの解説_基礎知識
1. typeof(param) はパラメータ (文字列) の型を返します
このメソッドは JS で定義されたグローバル メソッドであり、コンパイラによって最も一般的に使用されるメソッドでもあります。利点は、使用が簡単で覚えやすいことです。欠点は、オブジェクト、null、配列を判断できないことです。正規表現とカスタムオブジェクトは非常にうまく機能します。
サンプルコード:
var str= 'str' ;
var arr=['1','2'];
var num=1;
var bool=true;
var obj={name:'test'};
var nullObj=null;
var unfineedObj=unknown;
var reg=/reg/;
function fn(){
alert('これは関数です');
}
function User(name){
this.name=name;
}
var user=new User('user');
console.log(typeof(str));
console.log(typeof(arr));
console.log(typeof(num));
console.log(typeof(bool) );
console.log(typeof(obj));
console.log(typeof(nullObj));
console.log(typeof(unknownObj));
console.log(typeof( reg));
console.log(typeof(fn));
console.log(typeof(user));
結果は次のようになります:
string
object
number
boolean
オブジェクト
オブジェクト
未定義
オブジェクト
関数
オブジェクト
2. Object.prototype.toString().call(param)パラメータのタイプを返します (文字列、形式は [オブジェクト クラス])
このメソッドはほとんどのタイプの判定をサポートでき、jquery のカプセル化された型判定はこのメソッドを使用します。少し混乱している人もいるかもしれないので、簡単に説明します。
1) call(param) 関数
a.fun().call(b) は、js では、オブジェクト b で a を置き換え、次に a の fun 関数を実行することを意味します。
function Class1()
{
this.name = "class1" ;
this.showNam = function()
{
アラート(this.name)
}
}
関数 Class2()
{
this.name = "クラス 2"
}
var c1 = 新しいクラス 1();
var c2 = 新しいクラス 2();
つまり、Object.prototype.toString().call(param) は実際には param.prototype.toString() を意味するので、param.prototype.toString() を直接記述せず、call() を使用してみましょう。回り道になりますので、以下の2を参照してご理解ください。
2) Object.prototype.toString()
オブジェクトとは何ですか? 、Script56.chm (公式 M$ チュートリアル) には次のように書かれています: Object はすべての JScript オブジェクトに共通の機能を提供します。実際、Object はすべての js オブジェクトの祖先であり、js のすべてのオブジェクトは Object のインスタンスです。さまざまなオブジェクト 独自の独立したメソッドをオーバーライドします。プロトタイプに関しては、あまり深くする必要はありません。プロトタイプへの参照を返すだけで、プロトタイプにメソッドと属性を動的に追加できます小さな例
this.name = "class";
this.showName = function( ){
alert(this.name);
}
}
var obj = new class();
obj.showName();
class .prototype.showNameContact = function (){
alert("プロトタイプ テスト" this.name);
}
obj.showNameContact();
その後、クラスとプロトタイプのテストクラスがそれぞれ出力されます。本来、showNameContact 関数はコンストラクター class() に定義されていませんが、prototype を通じてオブジェクトのプロトタイプに関数を動的に追加することができ、当然新しいオブジェクトに含まれます。例。 。したがって、Object.prototype.toString() は、Object の祖先にある toString メソッドを実行することを意味します。
では、toString() は何をするのでしょうか? toString() 関数は、多くの JS マニュアルで次のように定義されています。
toString() メソッドは、論理値を文字列に変換し、結果を返すことができます。構文は booleanObject.toString() です。先ほども述べたように、js 内のオブジェクトはすべて継承されたオブジェクトであり、これらのオブジェクトにはカスタマイズされた関数が含まれたり、Object の一部の関数が再構築されたりして、すべて toString() 関数が書き換えられます。したがって、1 に param.prototype.toString() を直接記述して、param 自体によって書き換えられた toString() 関数が実行されることは考えられません。
さて、ここからが重要な瞬間です。toString() は何をするのか、またその役割は何でしょうか?
ES3 では、Object.prototype.toString メソッドの仕様は次のとおりです:
Object.prototype.toString()
toString メソッドが呼び出されると、次の手順が実行されます:
1. このオブジェクトの [[Class]] 属性の値を取得します。
2. 3 つの文字列「[object」、最初のステップの演算結果 Result(1)、および「]」連結後の新しい文字列を計算します。
3. 2 番目のステップ Result(2) の演算結果を返します。
ES3 では、[[クラス]] の内部プロパティが何種類あるかは仕様書にまとめられていませんが、[ の値は合計 10 種類あります。 [クラス]] それぞれ、ネイティブ オブジェクトの内部プロパティ: "Array"、"Boolean"、"Date"、"Error"、"Function"、"Math"、"Number"、"Object"、"RegExp"、 「文字列」ですので、 Object.prototype.toString() 出力結果は、[オブジェクト配列]、[オブジェクトブール] 形式の文字列になります。
ES5.1 では、仕様がより詳細に記述されることに加えて、Object.prototype.toString メソッドとオブジェクトの [[class]] 内部プロパティの定義にもいくつかの変更があります。 prototype.toString メソッドは次のとおりです:
Object.prototype.toString ()
toString メソッドが呼び出されると、次の手順が実行されます:
1 this の値が未定義の場合、「[object Unknown]」を返します。
2 this の値が null の場合、「[object Null]」を返します。
3 O をToObject(this) を呼び出した結果。
4 class を O の内部プロパティ [[Class]] の値にする。
5 連結後に 3 つの文字列 "[object "、class、および "]" を返す New文字列。
ステップ 1 と 2 は ES3 よりも 1、2、3 ステップ増えていることがわかります。ステップ 1 とステップ 2 は、「未定義」と「Null」が ES3 の値に属さないため、非常に特殊です。 [[クラス]] 属性。統計によると、返されるタイプは「引数」、「配列」、「ブール値」、「日付」、「エラー」、「関数」、「JSON」、「数学」、「数値」、「オブジェクト」です。 , "RegExp" ", "String" は ES3 よりも 2 つの型が増えています。引数オブジェクトの [[class]] は、以前の "Object" ではなく "Arguments" になりました。また、複数のグローバル オブジェクト JSON があり、その [ [クラス ]]値は「JSON」です。
最後に、Object.prototype.toString().call(param) によって返される [オブジェクト クラス] のクラスの最初の文字は大文字であり、JSON ですら大文字であることを皆さんに思い出していただきたいと思います。判断 エラーを防ぐためにすべてを小文字に変換します。Object.prototype.toString().call(param).toLowerCase() を使用するだけです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









オブジェクトからバイトへ、そしてバイトからオブジェクトへ 今日は、オブジェクトからバイトに変換する方法、およびバイトからオブジェクトに変換する方法を理解します。まず、クラス Student を定義します。 packagecom.byteToObject;importjava.io.Serializable;publicclassstudentimplementsSerializable{privateintsid;privateStringname;publicintgetSid(){returnsid;}publicvoidsetSid(in)

1. オブジェクト クラスの概要 オブジェクトは、Java によってデフォルトで提供されるクラスです。 Object クラスを除いて、Java のすべてのクラスには継承関係があります。デフォルトでは、Object 親クラスを継承します。つまり、Object のリファレンスを使用して、すべてのクラスのオブジェクトを受け取ることができます。例: Object を使用して、すべてのクラスのオブジェクトを受信します。 classperson{}classStudent{}publicclassTest{publicstaticvoidmain(String[]args){function(newperson());function(newStudent());}public

Java では、Object クラスの getClass() 関数を使用して、オブジェクトのランタイム クラスを取得します。Java では、各オブジェクトには、オブジェクトのプロパティとメソッドを定義するクラスがあります。 getClass() 関数を使用して、オブジェクトのランタイム クラスを取得できます。 getClass() 関数は Object クラスのメンバー関数であるため、すべての Java オブジェクトがこの関数を呼び出すことができます。この記事では、getClass() 関数の使用方法といくつかのコード例を紹介します。取得を使用する

基本データ型と Object の関係 Object がすべての型の基本クラスであるということは誰もが聞いたことがあると思いますが、Java の基本データ型は Object とは何の関係もないため、この文は実際には正しくありません。たとえば、swap メソッドを呼び出す場合、Object は実際には基本データ型とは何の関係もないため、int 型を swap(Objectobj) メソッドに直接渡すことはできません。このとき、a は型が一致しないことがわかります。自動的にラップされます. Integer 型になっています. この時点で Object に接続でき、swap メソッドを正常に呼び出すことができます. Object、基本データ型のラッパー クラス

PHP Notice: Tryingtogetpropertyofnon-object の解決策 PHP で開発しているときに、「 Notice: Tryingtogetpropertyofnon-object」というエラー メッセージが表示されることがあります。このエラー メッセージは、通常、初期化されていないオブジェクトを使用しているか、オブジェクトの参照が失われたために発生します。特定のコード部分に問題があり、プロパティに正しくアクセスできません。

Redis の 2 層データ構造の紹介。Redis のパフォーマンスが高い理由の 1 つは、その各データ構造が特別に設計され、1 つ以上のデータ構造によってサポートされていることです。これらの柔軟なデータ構造は、読み取りを向上させるために利用されています。パフォーマンス フェッチおよび書き込みパフォーマンス。 Redis のデータ構造を理解したい場合は、2 つの異なるレベルから議論できます: 最初のレベルはユーザーの観点からのものであり、このレベルは Redis が外部に公開する呼び出しインターフェイスでもあります (文字列、リスト、ハッシュ、セット、ソートセット。 2 番目のレベルは内部実装の観点からのもので、dict、sds、ziplist、quicklist、skiplis などの下位レベルの実装に属します。

PHP Notice の解決策: Tryingtogetpropertyofnon-object PHP でコードを作成する過程で、「Tryingtogetpropertyofnon-object」というエラー メッセージが表示されることがあります。このエラー メッセージは通常、存在しないオブジェクト プロパティにアクセスしようとしてコード内でエラーが発生したために発生します。このエラー メッセージは通常、次の状況で表示されます。 オブジェクトが存在しません。

JavaScript では、typeof は、特定の変数のデータ型を決定するために使用される演算子です。変数が文字列、数値、ブール値、関数、オブジェクト、または未定義のデータ型であるかどうかを判断するために使用できます。
