読者です 読者をやめる 読者になる 読者になる

cho-san Life Log

IT シーカヤック SUP お酒 コミュニティなど

JavaScript勉強メモ - constructorについてのメモ

> function ClassA(){};

> var a = new ClassA();

> console.log(a.constructor);
[Function: ClassA]

> console.log(ClassA.prototype.constructor);
[Function: ClassA]

> Object.getOwnPropertyNames(ClassA.prototype);
[ 'constructor' ]

// ClassAのprototypeを書き換える

> ClassA.prototype = {
... foo: function(){console.log('foo');
..... }
... }
{ foo: [Function: foo] }

 

// ClassAのprototypeを書き換えたあとは、ClassAのprototypeからconstructorが消えて

'foo'のみになった。
> Object.getOwnPropertyNames(ClassA.prototype);
[ 'foo' ]

 

// in演算子を使うとプロトタイプまで遡ってプロパティがあるか確認する

> console.log('constructor' in a);
true

 

// hasOwnProperty(key)では、プロトタイプまで参照しない

// インスタンスも、インスタンスの元となるClassAにconstructorは存在しない。
> console.log(a.hasOwnProperty('constructor'));
false

> ClassA.hasOwnProperty('constructor');
false

> Object.hasOwnProperty('constructor');

false

// Objectのprototypeにconstructorがあることを発見

> Object.prototype.hasOwnProperty('constructor');
true