构造函数和原型的复习

构造函数

js中有三种对象的创建方法

  • 字面量创建对象 var obj = { }
  • 使用new关键字创建对象 var obj = new Object()
  • 使用构造函数创建对象
function Obj(name,age){
    //用this创建出来的属性叫做实例成员
    this.name = name ;
    this.age = age
}
var dd = new Obj('wsj',18)
console.log(dd.name)
    //实例成员只能通过实例化的对象来访问
    
    //用函数名创建出来的属性叫做静态成员,只能被构造函数调用
Obj.gender = 'man'
console.log(Obj.gender)
复制代码

image.png
构造函数造成了内存浪费,可以用prototype(构造函数原型对象)解决

原型

每一个构造函数都有一个prototype属性,指向另外一个对象,我们可以把相同的方法存储到原型对象上避免内存浪费。而且这样可以让所有对象的实例都共享使用这些方法。

如何访问实例对象?

  • 构造函数.prototype
  • 对象实例.proto

image.png

我们创建的属性,要么只能被构造函数访问,要么只能被实例化对象访问,但是如果我们在构造函数的prototype对象中创建的方法和属性,可以被所有对象访问。

image.png

constructor 构造函数

对象原型中存在一个constructor属性,指向构造函数本身

image.png

原型链

我理解的原型链就是一种关系,对象的__proto__指向他的原型对象,而他的原型对象也是一个对象,也有自己的原型对象Object

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享