js面向对象程序设置——创建对象
<script type="text/javascript">
//工厂方式
//1、原始方式
/* var objCar=new Object();
objCar.name="劳斯莱斯";
objCar.color="blue";
objCar.showColor = function() {
alert(this.color);
return this.color;
};
alert(objCar.name+" "+objCar.showColor()); */
//问题,以上代码只能创建一个对象,如果创建多个对象,需用重写一份代码
//解决办法:
/* function createCar(){
var objCar=new Object();
objCar.name="劳斯莱斯";
objCar.color="blue";
objCar.showColor = function() {
alert(this.color);
return this.color;
};
return objCar;
}
var objCar1=createCar();
var objCar2=createCar();
alert(objCar1.name+" "+objCar1.showColor());
alert(objCar2.name+" "+objCar2.showColor()); */
//问题:创建的两个对象内容完全一样,没用使用价值
//解决办法:
/* function createCar(carName,carColor){
var objCar=new Object();
objCar.name=carName;
objCar.color=carColor;
objCar.showColor = function() {
alert(this.color);
return this.color;
};
return objCar;
}
var objCar1=createCar("AAA","red");
var objCar2=createCar("BBB","yellow");
alert(objCar1.name+" "+objCar1.showColor());
alert(objCar2.name+" "+objCar2.showColor()); */
//工厂外添加方法
/* var showColor = function() {
alert(this.color);
return this.color;
};
function createCar(carName,carColor){
var objCar=new Object();
objCar.name=carName;
objCar.color=carColor;
objCar.showColor = showColor;
return objCar;
}
var objCar1=createCar("AAA","red");
var objCar2=createCar("BBB","yellow");
alert(objCar1.name+" "+objCar1.showColor());
alert(objCar2.name+" "+objCar2.showColor()); */
//2、构造方式
/* function Car(carName,carColor){
this.name=carName;
this.color=carColor;
this.showColor = function() {
alert(this.color);
return this.color;
};
}
var objCar1=new Car("AAA","red");
var objCar2=new Car("BBB","yellow");
alert(objCar1.name+" "+objCar1.showColor());
alert(objCar2.name+" "+objCar2.showColor()); */
//3、原型方式
/* function Car(){};
Car.prototype.name="CCC";
Car.prototype.color="red";
Car.prototype.showColor=function(){
alert(this.color);
return this.color;
};
var oCar1 = new Car();
var oCar2 = new Car();
alert(oCar1.showColor());
alert(oCar2.showColor()); */
//问题:不能传参,属性指向对象,而不是函数,函数可以被多个对象共享,不会出问题
//对象共享可能会出现问题
/*function Car(){};
Car.prototype.name="CCC";
Car.prototype.color="red";
Car.prototype.driver=new Array("VVV","KKK");
Car.prototype.showColor=function(){
alert(this.color);
return this.color;
};
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.driver.push("BBB");
alert(oCar1.driver);
alert(oCar2.driver); */
//问题:没有给oCar2对象加东西,却给加了数据。
//4、构造+原型
/* function Car(carName,carColor){
this.name=carName;
this.color=carColor;
//不共享对象
this.driver=new Array("VVV","KKK");
}
//共享函数
Car.prototype.showColor=function(){
alert(this.color);
return this.color;
};
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.driver.push("BBB");
alert(oCar1.driver);
alert(oCar2.driver); */
//5、动态工厂
/* function Car(sColor,iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","John");
if (typeof Car._initialized == "undefined") {
Car.prototype.showColor = function() {
alert(this.color);
};
Car._initialized = true;
}
}
var objCar1=new Car("AAA","red");
var objCar2=new Car("BBB","yellow");
objCar1._initialized=true;
alert(objCar1.color);
alert(objCar2.color);
objCar1.showColor();
objCar2.showColor(); */
//原型添加成员的方式二
/* function Car(){};
Car.prototype={
name:"313",
color:"yyy",
showColor:function(){
alert(this.color);
}
};
var oCar1 = new Car();
var oCar2 = new Car();
oCar1.showColor();
oCar2.showColor(); */
//注:js面向对象提供这么多创建对象的方法,哪到底使用哪一种呢。构造+原型使用的最为广泛。
//动态原型用的也比较多
</script>
转载于:https://blog.51cto.com/cbg23/1639372
js面向对象程序设置——创建对象相关推荐
- JS高级程序设置笔记(二)
5.4 RegExp类型 用这个类来表示正则表达式. var expression = /pattern/flags; pattern部分是任何简单的或者复杂的正则:每一个正则都有一个或者多个标志. ...
- 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法
微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法 参考文章: (1)微信小程序首页index.js获取不到app.js中动态设置的globalDat ...
- JS 小程序 Vue 2022年最全面试题!持续更新
vue面试题 核心原理部分 mvc mvvm和mvp的区别? MVVM 就是 Model-View-ViewModel 的缩写,MVVM 将视图和业务逻辑分开. View:视图层,Model 数据模型 ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- 对js面向对象的理解
转自:http://www.cnblogs.com/jingwhale/p/4678656.html js面向对象理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP ...
- Javascript面向对象全面剖析 —创建对象
先介绍目前在ECMAScript中使用最广泛,认同度最高的默认模式. 1.组合使用构造函数及原型 function Person(name,age,job){this.name = name;this ...
- JS 面向对象编程、原型链、原型继承(个人学习总结)
一.面向对象 1. 面向对象 是所有语言 都有的一种编程思想,组织代码的一种形式 基于对象的语言:JS语言 面向对象的语言:c++ java c# 2. 面向对象 3大特征 封装:将重用代码封装到函数 ...
- 9.JS面向对象补充
JS面向对象补充 本文章来源于王红元老师(coderwhy)的 JS高级课程 附上链接:https://ke.qq.com/course/3619571 谁能拒绝一个*100%好评还加课的老师呢 目录 ...
- 【何不三连】JS面向对象最后一弹-多态篇(羽化升仙)
前言 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 首先抱歉让大家久等了,大家一直期待的"多态"篇到现在才来 ????,其实我最近挺忙的,给张手机截图让大家感受一下 ...
最新文章
- 利用套接字实现进程通信一例
- integral函数
- python中将字符变为大写_Python笔记(一)
- 利用Sqoop将MySQL海量测试数据导入HDFS和HBase
- DM***+OSPF测试
- 用户自定义属性表结构设计_属性类型定制及其妙用
- 第十三天-企业应用架构模式-对象-关系元数据映射模式
- 如果奇迹有颜色,那么一定是暴力or模拟比较6
- 阿里总裁马云对于第5个经济体技术有着独特的见解
- 操作系统之多道程序设计
- 普中28335开发攻略_凌乱的DSP笔记(1)-F28335基础知识
- Raspberry 4B
- ROC和 区别p值和q值
- 新站长建设网站需要学习知识
- Spark大数据技术与应用期末总结大题
- php7如何加入环境变量
- https自签证书tls握手时错误或go系统错误处理
- [转载] 暗潮涌动:警惕IBM温情脉脉背后的垄断野心
- 2020年前端面试题(二)之VUE篇
- 计算机输入法设计大赛,搜狗输入法皮肤设计大赛获奖作品