百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模
分享文章到:

详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模

发布时间:01/15 来源: 浏览: 关键词:
小编推荐的这篇文章详解了js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式),有需要的同学可以参考一下

1.工厂模式

工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象。其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可。

functiona(name){
 varb =newobject();
 b.name = name;
 b.say =function(){
  alert(this.name);
 }
  returnb
}

函数内部产生b对象并返回。 

2.构造函数模式

functionPerson(name, url) {//注意构造函数名第一个字母大写
 this.name = name;
 this.url = url;
 this.alertUrl = alertUrl;
}
  
functionalertUrl() {
 alert(this.url);
}

因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。

3.原型模式

我们创建的每个函数都有prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处就是可以让所有对象实例共享它所包含的属性及方法。

functionPerson(){
}
 
Person.prototype.name ="bill";
Person.prototype.address ="GuangZhou";
Person.sayName =function(){
  alert(this.name);
}
 
varperson1 =newPerson();
varperson2 =newPerson();
  
//测试代码
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属性

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有1人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板