LoginSignup
4
3

More than 5 years have passed since last update.

constructorプロパティを使ってみる

Posted at

constructorプロパティについては以下のページが分かりやすかったです。
Object.prototype.constructor

実際に使ってみる

constructorプロパティについてなんとなく理解したところで、前回の宿題を解いてみる。

宿題

js
sum(1,2,3,4,5,"test",[],10,"xxx",false,3,true);

みたいに文字列、配列、真偽値などが入ったときに、
数字は足して、真偽値のときは×2する
のをconstructorプロパティを使ってなんとかする(result:106になったら正解)

解答

js
var sum = function(){
  var total = 0;
  for (var i=0 ; i<arguments.length ; i++){

    if(arguments[i].constructor == Number){
      total += arguments[i];

    }else if(arguments[i].constructor == Boolean){
      total *= 2;
    }

  }
  return total;
}

var result = sum(1,2,3,4,5,"test",[],10,"xxx",false,3,true);

console.log("result: " + result);  //result:106

前回コメントいただいた、nullチェックやtypeofを使ってなんとかするのを今度やってみます

ユーザ定義のコンストラクタ関数でも同様に動作する

js
function aClass () {}
var aInstance = new aClass();
aInstance.constructor === aClass //true
aInstance.constructor // function aClass () {}


次回までの宿題

(e)の使い方がよくわからなかったので、理解を深めるために以下の問題に挑戦です。
↓を実行してクリックした対象のconstructorがHTMLDivElementのときにconsole.log("success");を実行する

js
document.body.addEventListener("click", function (e) {
  // -- 解答ここから  

  // -- ここまで
  e.preventDefault();
  e.returnValue = true;
});
4
3
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
4
3