LoginSignup
1
0

More than 5 years have passed since last update.

JSの元から用意されているコンストラクタについて

Posted at

JSにはシステムで元から用意されているコンストラクタもある。

例えば、、

  • 文字列に対するコンストラクタ
  • 配列に関するコンストラクタ
  • 関数に関するコンストラクタ

などなど。

文字列に対するコンストラクタ

Stirngコンストラクタについて

jsの文字列はStringコンストラクタから生成されたオブジェクトとして見なすことができる。
以下の二つは書き方は違うが、どちらも'こんにちは'という文字列情報を生成している。

var data = new String('こんにちは');
var data = 'こんにちは';

わざわざStringコンストラクタを実行して文字列を作ると、同じ文字列でも別々のオブジェクトとして生成される。
どうゆうことかと言うと…

var data1 = 'こんにちは';
var data2 = 'こんにちは';

data1 == data2 // true

こちらは文字列情報が同じ場合、変数が違っても、同じオブジェクトを参照するが、

var data1 = new String('こんにちは');
var data2 = new String('こんにちは');

data1 == data2 // false

こちらは同じ文字情報でも、異なるオブジェクトとして生成されている。

Stirngコンストラクタのメソッド

全ての文字列はStirngコンストラクタに定義されたメソッドを実行することができる。
例えば、toUpperCaseメソッドは英語の小文字を大文字に変換してくれるメソッド。

var data = "hoge";
data = data.toUpperCase();

console.log(data); //HOGE

配列に対するコンストラクタ

Arrayコンストラクタについて

jsの配列はArrayコンストラクタから生成されたオブジェクトとみなすことができる
以下の二つは書き方は違うが、どちらも空の配列を生成している。

var data = new Array();
var data = [];

Arrayコンストラクタのメソッド

Arrayコンストラクタに定義されたメソッドを実行できる。
例えば、sortメソッドは配列の要素を昇順にソートしてくれるメソッド。

var data = [3,4,5,1,2];
data = data.sort();
console.log(data); //[1,2,3,4,5]

ちなみに、連想配列はArrayコンストラクタから生成していないので、これらのメソッドを使用することができない。

関数に対するコンストラクタ

Functionコンストラクタについて

jsの関数はFunctionコンストラクタから生成されたオブジェクトと見なすことができる。
最後の引数には、生成する関数の実行コードを指定。
それ以外には生成する関数の引数名を指定。
以下の3つは書き方は違うが、どれも関数addを定義しており、実行方法、結果共に同じ。

var add = new Function('num1','num2','return num1 + num2');
function add(num1,num2){
  return num1 + num2;
};
var add = function(num1,num2){
  return num1 + num2;
};

Functionコンストラクタのメソッド

Functionコンストラクタに定義されたメソッドを実行できる。
例えば、callメソッドは関数内で使用するthisの参照先を変更することができます。

var Sample = function(value){
  this.value = value;
};
Sample.prototype.show = function(){
  console.log(this.value)
}

var sample1 = new Sample(1);
var sample2 = new Sample(2);

sample1.show(); // 1を表示
sample2.show(); // 2を表示
sample1.show.call(sample2) // thisの参照先がsample2に代わり、2を表示

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0