手机版

javascript创建对象的几种模式介绍

时间:2021-11-01 来源:互联网 编辑:宝哥软件园 浏览:

在js中,有几种模式可以创建对象并操作其中包含的属性和方法。

一般来说,构造函数名的第一个字母是大写字母,非构造函数名的第一个字母是小写字母。当然,构造函数和一般函数唯一的区别就是调用的方式,所以任何函数只要被new调用就可以作为构造函数,如果不被new调用就和一般函数一样。

谈谈我对这些模式的理解:

工厂模式:创建一个通用函数,在函数中创建一个Object对象,给这个对象添加属性和方法,同时给它赋值,最后返回对象。无法识别的对象类型。

构造函数模式:创建构造函数并使用它来赋值。每当创建实例时,都会创建一次方法,并且每个方法都执行相同的命令,这是多余的。这个缺点可以通过将方法放在全局环境中来实现,但是它没有被封装。但是可以通过原型模式来解决。

原型模式:每个函数都有一个原型属性,它是一个指向对象的指针,该对象包含由其函数创建的所有实例共享的属性和方法。

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

说明:1:构造函数的原型属性和构造函数创建的实例都指向构造函数的原型对象。

2:构造函数的原型对象有一个构造函数属性,指向构造函数。

3:构造函数的原型对象中包含的所有属性和方法都可以被构造函数创建的所有实例共享。

用对象的文字重写原型对象后,构造函数指向对象构造函数。如果需要指向另一个构造函数,则需要修改原型对象的构造函数属性值,如:constructor:Person,这样即使重写了Person的原型对象,原型对象的构造函数仍然指向Person构造函数。

第一次创建实例时:如果直接添加属性或方法,实例可以访问。

如果原型对象被重写,构造函数的原型指向新的原型对象,而先前创建的实例的原型仍然指向原始原型对象,因此实例无法访问新原型对象的新属性或新方法。

原型包含共享的属性和方法,所以每个实例都有这个信息,所以实例之间没有区别,参数不能传递,这不是我们想要的。每个实例都有共同的信息和不同的信息,所以我们可以组合使用构造函数模式和原型模式。

构造模式和原型模式的结合;

状态原型模式:将独立的构造函数与其原型对象相结合,在构造函数中初始化原型,并向它们添加方法。

如果方法不存在,它将被添加到原型对象中,并且在初始化原型时只执行一次。

寄生构造器模式:类似于工厂模式,只是寄生构造器模式是一个构造器,一个实例由new创建。

安全构造函数模式:没有公共属性,其方法不引用此对象。创建一个实例而不使用new。属性(即传入数据)只能通过方法访问。

以上介绍的几种用javascript创建对象的模式,都是边肖分享的内容,希望能给大家一个参考和支持。

版权声明:javascript创建对象的几种模式介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。