对prototype,instanceof和constrctor的理解

<!DOCTYPE html>

<html>

<head>

<script>

function Cat(name,color){

  this.name=name;

  this.color=color;

  this.eat=function(){console.log('eat fish');} 

}



var cat1=new Cat('ketty','black');

console.log(cat1.name);

console.log(cat1 instanceof Cat);//true 只要是new运算符实例化的对象 都是它的构造函数的实例 即 cat1=new Cat('nn','cc') cat1 Cat总是实例和类的关系

console.log(cat1.constructor); //Cat  读取prototype对象中的constructor属性的值,
//每个函数对象(不管普通函数还是构造函数)都有
prototype属性(属性值为对象),prototype对象中默认存在constructor属性,属性值指向构造函数自身 测试如下:
function Test(){}
console.log(Test.prototype.constructor); //Test
//若直接给函数的prototype属性赋值 将丢失constructor这个默认属性值 如:
//Cat.prototype={a:22}; //Object对象的字面量 Object对象prototype默认有属性constructor:Object;
//console.log(cat1.constructor); //Object
console.log(cat1.prototype); //undefined. prototype是function对象的属性 

console.log(cat1.constructor.prototype); //Cat{}
</script> </head> <body> </body> </html>

 

你可能感兴趣的:(instanceof)