js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Posted 三十亿少女的梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)相关的知识,希望对你有一定的参考价值。
1.工厂模式
function a(name){ var b = new object(); b.name = name; b.say = function(){ alert(this.name); } return b }
函数内部产生b对象并返回。
2.构造函数模式
function Person(name, url) { //注意构造函数名第一个字母大写 this.name = name; this.url = url; this.alertUrl = alertUrl; } function alertUrl() { alert(this.url); }
因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。
3.原型模式
function Person(){ } Person.prototype.name = "bill"; Person.prototype.address = "GuangZhou"; Person.sayName = function (){ alert(this.name); } var person1 = new Person(); var person2 = new Person(); //测试代码 alert(person1.name); // bill alert(person2.name); // bill person1.sayName(); //bill person2.sayName(); //bill person1.name = "666"; alert(person1.name); // 666 alert(person2.name); // bill person1.sayName(); //666 person2.sayName(); //bill
我们创建的每个函数都有prototype(原型)属性,这个属性其实是一个指针,指向一个对象。
当构造一个person对象例如person1之后,它的默认name属性就是bill。如果要改name值的话就要对person1.name操作。这只是改了这个对象的name属性。alert(person1.prototype.name)依然是弹出bill,即原型上的name属性
注:这只是本人学习的一些总结,如果有不对的地方还请各位大腿指正!
以上是关于js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)的主要内容,如果未能解决你的问题,请参考以下文章
js - 创建对象的几种方式(工厂模式构造函数模式原型模式)
[ES6] js创建对象的几种方法 字面式创建对象 工厂模式 构造函数模式 prototype __ proto __ 对象访问机制