构造函数和实例的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数和实例的关系相关的知识,希望对你有一定的参考价值。

参考技术A 构造函数和实例的关系:用构造函数来实例化一个对象,实际上就是把构造函数拷贝了一份给实例。外加一个原型属性,指向实例的公共区域。这个公共区域构造函数同样指向。

普通构造函数其实是继承自Object对象,过程如下:

构造函数创建一个实例之后,实例和构造函数都指向一个原型对象。这个原型对象是new Object()。new Object和Object都有同一个原型对象,原型对象中包含了一些普通方法。

//注意:构造函数和实例都会指向同一个原型。

判断关系


判断关系

1)检测构造函数和实例的关系,如何判断对象数据类型
实例名(对象名) instanceof 构造函数名 返回值是布尔值 true /false
typeof 实例名 "object"
f1 instanceof Fn
2)检测某个对象实例和原型之间是否存在对应关系:isPrototypeOf()

构造函数名.prototype.isPrototypeOf(实例)
Person.prototype.isPrototypeOf(p1) 存在关系true 不存在关系 false
3)

检测一个属性是存在于实例中,还是存在于原型中:hasOwnProperty()
语法格式:实例名.hasOwnProperty(属性) 属性属于实例,返回真,属于原型返回假。
例如:p1.hasOwnProperty("name")
属性名 in 对象名 不管在实例上,还是原型上,都为true。
继承的两种方式:
1)原型链继承: 孩子的原型等于父亲的实例。
child.prototype=new Parent();

对象名 instanceof Object true
对象名 instanceof 构造函数名 true
对象名 instanceof 父构造函数名 true

对象名.constructor== 构造函数名 1)扩展的 构造函数名.prototype.work=function(){}
2) 构造函数.prototype.constructor=构造函数

对象名.constructor== Object true 构造函数.prototype=new F1() { }



















以上是关于构造函数和实例的关系的主要内容,如果未能解决你的问题,请参考以下文章

构造函数和实例对象和原型对象之间的关系

构造函数和原型以及实例之间的关系

实例对象构造函数原型之间的关系

JS中构造函数与普通函数的区别及JS构造函数原型和实例的关系

JS中构造函数、实例、原型对象之间的关系

232 constructor构造函数,构造函数实例原型对象的三角关系