ホームページ ウェブフロントエンド jsチュートリアル JavaScript オブジェクトの学習メモ

JavaScript オブジェクトの学習メモ

Dec 20, 2016 pm 03:29 PM
javascript 物体

オブジェクトは JavaScript の基本単位であり、実際にはすべてがオブジェクトであり、その機能は独自のスタイルを持つだけでなく、独特の機能も備えています。

1. 参照

参照の概念は、オブジェクトの実際の位置へのポインターです。以下の例を参照してください:

var items = new Array("abc","def","hig");
//创建此数组的引用
var Ref = items;
items.push("klm");
alert(Ref.lenth);  //此处应该显示4
ログイン後にコピー

ただし、それが文字列の場合は、別の状況が発生します。以下のコードを参照してください:

var items = "abc";
var Ref = items;
items += "def";  //这里创建了一个新对象,而非原对象的修改。
ログイン後にコピー

これで、Ref と items は異なるオブジェクトを指します。

2. 関数のオーバーロード

JS のすべての関数には、すべてのパラメーターを受け取る疑似配列である変数引数があります。なぜ「擬似」なのかというと、変更することはできませんが、長さのプロパティがあるからです。次の例を見てみましょう:

function  myFun(num1,num2)
{
    if(arguments.length == 2) { alert("我有两个参数"); }
    if(arguments.length == 1) { alert("我有一个参数"); }
}
ログイン後にコピー

次に、関数 myFun("abc"); を呼び出して、違いを確認します。関数の重複をロードします:)

3. スコープ

JavaScript では、スコープはブロック (while、if、for) ではなく関数によって分割されます。これにより、一部のコードを理解する際に問題が発生する可能性があります。詳細を説明するために、次の例を見てみましょう:

var temp="oldTemp"    //全局变量
if(true)
{
    var temp = "newTemp"   //这里还在全局中
}
alert(temp == "newTemp")   //发现相等
ログイン後にコピー

しかし、関数内で temp 変数を宣言して変更すると、効果はまったく異なります。例を参照してください:

var temp="oldTemp" ;   //全局变量
function test()
{
    var temp = "newTemp";
}
test();
alert(temp == "newTemp") ;  //发现不相等
ログイン後にコピー

JS では、グローバル変数はメンバーですwindow オブジェクトのプロパティの、上記の例では、グローバル変数 temp == window.temp ですが、特定の変数に宣言がない場合、その変数は自動的にグローバル変数になることにも注意してください。特定の機能でのみ使用されます。

4. クロージャ

クロージャとは、外部関数が終了した場合でも、内部関数がその周囲の関数内の変数を参照できることを意味します。以下の例を参照してください:

function AddNum(num1)
{
    return function (num2)
    {
        return num1 + num2;
    }
}
var temp = AddNum(4);          //传入第一个参数,然后AddNum消失
var temp2 = temp(5);           //传入第二个参数,然后相加,返回9
alert(temp2);
ログイン後にコピー

この例はクロージャの概念をよく表しています。これは特殊なケースであり、このように使用されることはありません。

5. コンテキスト オブジェクト

コンテキスト オブジェクトはこの変数を通じて反映され、常に現在のコードが配置されているオブジェクトを指します。以下のコードを参照してください:

var obj ={
    yes:function(){
        this.val = true;
    },
    no:function(){
        this.val = false;
    }
}
alert(obj.val == null);   //这里我们发现对象obj没有val属性
obj.yes();                     //执行yes函数,obj有了val属性
alert(obj.val == true);
 
window.no = obj.no     //把obj的no函数传给window对象
window.no();
alert(obj.val == true) ;  //发现没有变化
alert(window.val == false)   //window里的val变为false;
ログイン後にコピー

ここで理解するのは簡単ではありませんが、幸いなことに、JS には call メソッドが用意されています。以下の例を参照してください:

function changeColor(color)
{
    this.style.color = color;
}
changeColor("Red");    //这里不行,因为window对象没有style属性
var temp = document.getElementById("temp");
changeColor.call(temp,"White");  //这里注意call的用法
ログイン後にコピー

call メソッドは、コンテキスト オブジェクトを最初のパラメーターとして設定し、他のパラメーターを元の関数のパラメーターとして設定します。

6. オブジェクト

ここでトピックに入ったばかりですが、前の概念では、実際にはこのブロックにはそれほど多くのコンテンツはありません。例を直接見てみましょう:

var obj = new Object();    //创建一个对象obj
obj.val = 5;               //创建属性obj,并为其赋值
obj.click = function()     //创建函数
{
    alert("我被单击了");
}
ログイン後にコピー

上記のコードは次のコードと同等です:

var obj = {
    val : 5,
    click: function(){
        alert("我被单击了");
    }
}
ログイン後にコピー

他のオブジェクト指向言語とは異なり、JS にはクラスの概念がありません。他の言語では、基本的に特定のクラスをインスタンス化する必要があります。クラスのインスタンスですが、JS ではそのアプローチが異なります。あらゆる関数をオブジェクトとしてインスタンス化できます。まず単純なオブジェクトを作成します:

function User(name)
{
    this.name = name;
}
var temp = new User("张三");
alert(temp.name);
ログイン後にコピー

上記のオブジェクト User が関数としてのみ使用される場合はどうなるでしょうか?

User("只作为函数使用");
alert(window.name);
ログイン後にコピー

これのコンテキストがウィンドウオブジェクトになります。

7. オブジェクト メソッド

エンド ユーザーはオブジェクトのコンテキストでパブリック メソッドにアクセスできます。ここでは、prototype 属性を理解する必要があります。以下のコードを参照してください:

function User(name,age)
{
    this.name = name;
    this.age = age;
}
User.prototype.getName = function(){ return this.name};
var user = new User("张三",25);
alert(user.getName());
ログイン後にコピー

パブリック メソッドを動的に作成することもできます。以下のコードを参照してください:

function User(name,age)
{
    this.name = name;
    this.age = age;
    this.getName = function(){ return this.name};
}
 
var user = new User("张三",25);
alert(user.getName());
ログイン後にコピー

コードが初めてコンパイルされるとき、動的に生成されたメソッドは生成されません。この手法は、オーバーヘッドのプロトタイプを作成するために使用されます。さらに強力かつ柔軟です。

上記は JavaScript オブジェクト学習ノートの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

PHP 関数はどのようにオブジェクトを返すのでしょうか? PHP 関数はどのようにオブジェクトを返すのでしょうか? Apr 10, 2024 pm 03:18 PM

PHP 関数は、return ステートメントに続いてオブジェクト インスタンスを使用してオブジェクトを返すことにより、データをカスタム構造にカプセル化できます。構文: functionget_object():object{}。これにより、カスタム プロパティとメソッドを使用してオブジェクトを作成し、オブジェクトの形式でデータを処理できるようになります。

PHP における配列とオブジェクトの違いは何ですか? PHP における配列とオブジェクトの違いは何ですか? Apr 29, 2024 pm 02:39 PM

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

C++ 関数がオブジェクトを返すときは何に注意する必要がありますか? C++ 関数がオブジェクトを返すときは何に注意する必要がありますか? Apr 19, 2024 pm 12:15 PM

C++ では、関数がオブジェクトを返すときに注意する点が 3 つあります。 オブジェクトのライフサイクルは、メモリ リークを防ぐために呼び出し元によって管理されます。ぶら下がりポインタを回避し、動的にメモリを割り当てるかオブジェクト自体を返すことにより、関数が戻った後もオブジェクトが有効なままであることを確認します。コンパイラーは、パフォーマンスを向上させるために、返されたオブジェクトのコピー生成を最適化する場合がありますが、オブジェクトが値セマンティクスによって渡される場合、コピー生成は必要ありません。

See all articles