目次
1. 使用new操作符调用函数
2. 直接调用函数
3.小结
1. new 演算子を使用して関数を呼び出します
2. 関数を直接呼び出す
3. 概要
ホームページ ウェブフロントエンド jsチュートリアル JavaScript コンストラクターの簡単な説明

JavaScript コンストラクターの簡単な説明

Apr 04, 2017 am 10:26 AM
javascript

構築関数」というと、ほとんどの人はJavaクラスの概念を思い浮かべるでしょう。JavaScriptにもコンストラクターがあり、その使用構文はJavaなどのオブジェクト作成の構文に似ています。クラスベースの言語。

JavaScript コンストラクターは、次の特徴を持つ特別なタイプの関数です:

  • Use <a href="http://www.php.cn/wiki/165.html" target="_blank">new <code><a href="http://www.php.cn/wiki/165.html" target="_blank">new</a>关键字调用函数

  • 函数首字母大写

面试中,我经常针对构造函数问两个问题:

  1. 构造函数首字母必须大写吗?

  2. 不用new关键字,直接运行构造函数,是否会出错?如果不会出错,那么,用new和不用new调用构造函数,有什么区别?

问题1基本100%都能答对(大小写都可以),问题2有20%同学会答错,尤其是第二问。

那么,让我们看看new操作符到底起到什么作用?

1. 使用new操作符调用函数

例子:

function Person(name){
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
}

var person1 = new Person('nicole');
person1.say(); // "I am nicole"
ログイン後にコピー

new调用构造函数,函数内部会发生如下变化:

  • 创建一个this变量,该变量指向一个空对象。并且该对象继承函数的原型;

  • 属性和方法被加入到this引用的对象中;

  • 隐式返回this对象(如果没有显性返回其他对象)

用伪程序来展示上述变化:

function Person(name){
  // 创建this变量,指向空对象
  var this = {}; 
  // 属性和方法被加入到this引用的对象中
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
  // 返回this对象
  return this;
}
ログイン後にコピー

可以看出,用new调用构造函数,最大特点为,this对象指向构造函数生成的对象,所以,person1.say()会返回字符串: "I am nicole"。

小贴士

如果指定了返回对象,那么,"this"对象可能被丢失。

function Person(name){
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
  var that = {};
  that.name = "It is that!";
  return that;
}

var person1 = new Person('nicole');
person1.name; // "It is that!"
ログイン後にコピー

2. 直接调用函数

如果直接调用函数,那么,this对象指向window,并且,不会默认返回任何对象(除非显性声明返回值)。

还是拿Person函数为例,直接调用Person函数:

var person1 = Person('nicole');
person1; // undefined
window.name; // nicole
ログイン後にコピー

可见,直接调用构造函数的结果,并不是我们想要的。

3.小结

为了防止因为忘记使用new关键字而调用构造函数,可以加一些判断条件强行调用newキーワードは関数を呼び出します

関数の最初の文字は大文字です🎜🎜インタビュー中、私はコンストラクターについてよく 2 つの質問をします:🎜🎜🎜コンストラクターの最初の文字は大文字にする必要がありますか? 🎜🎜🎜 new キーワードを使用せずにコンストラクターを直接実行すると、エラーが発生しますか?エラーが発生しない場合、new を使用してコンストラクターを呼び出す場合と new を使用しない場合の違いは何ですか? 🎜🎜 基本的に、100% の生徒が質問 1 (大文字と小文字の両方) に正しく答えることができ、20% の生徒が質問 2、特に 2 番目の質問に誤答します。 🎜🎜それでは、new演算子🎜 が実際にどのような効果をもたらすかを見てみましょう。 🎜

1. new 演算子を使用して関数を呼び出します

🎜例: 🎜
function Person(name){
  if (!(this instanceof Person)) {
    return new Person(name);
  }
  this.name = name;
  this.say = function(){
    return "I am " + this.name;
  }
}

var person1 = Person('nicole');
console.log(person1.say()); // I am nicole
var person2 = new Person('lisa');
console.log(person2.say()); // I am lisa
ログイン後にコピー
🎜new を使用してコンストラクターを呼び出すと、関数内で次の変更が行われます: 🎜🎜🎜 🎜空のオブジェクトを指す this変数 🎜 を作成します。
オブジェクトは 🎜 関数のプロトタイプを継承します🎜🎜属性とメソッド 🎜 がこれに追加されますオブジェクト参照内で 🎜;🎜🎜🎜このオブジェクトを暗黙的に返します (他のオブジェクトが明示的に返されない場合)🎜🎜疑似プログラムを使用して、上記の変更点: 🎜rrreee🎜 new を使用してコンストラクターを呼び出す最大の特徴は、this オブジェクトが、コンストラクターなので、person1.say() は 文字列を返します。 🎜:「私はニコールです」。 🎜rrreee

2. 関数を直接呼び出す

🎜 関数を直接呼び出す場合、this オブジェクトは window を指し、オブジェクトは存在しません。デフォルトで返されます (戻り値が明示的に宣言されていない限り)。 🎜🎜person 関数を例として、person 関数を直接呼び出してみましょう: 🎜rrreee🎜 コンストラクターを直接呼び出した結果は、私たちが行ったものではないことがわかります。欲しい。 🎜

3. 概要

🎜 new キーワードの使用を忘れてコンストラクターが呼び出されるのを防ぐために、 への呼び出しを強制するためのいくつかの判定条件を追加できます。 new キーワード コードは次のとおりです: 🎜rrreee🎜 🎜

以上がJavaScript コンストラクターの簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

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 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

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

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

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

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

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 Dec 17, 2023 am 08:41 AM

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。

See all articles