博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript面向对象:创建对象
阅读量:2578 次
发布时间:2019-05-11

本文共 1784 字,大约阅读时间需要 5 分钟。

1.初级创建对象

var oCar=new Object;	oCar.color='red';	oCar.door=4;	oCar.map=3;	oCar.showColor=function () {		// body...		alert(this.color);	}	console.log(oCar);
缺点:需要创建多个Car实例

2.工厂函数创建对象

function showColor(){		alert(this.color)	}	function createCar(sColor,iDoors,iMpg) {		var oTempCar=new Object;		oTempCar.color=sColor;		oTempCar.door=iDoors;		oTempCar.mpg=iMpg;		oTempCar.showColor=showColor;		return oTempCar;	}	var oCar1=createCar('red',2,23);	oCar1.showColor();

 缺点:看起来不像是对象的方法

3.构造函数创建对象

function Car(sColors,iDoors,iMpg) {		// body...		this.color=sColors;		this.iDoors=iDoors;		this.iMpg=iMpg;		this.showColor=function(){			alert(this.color);		}	}	var oCar1=new Car('red',4,23);	var oCar2=new Car('blue',5,24)

 优点:内部不需要创建对象,this直接可以访问; 缺点:会重复生成函数

4.原型方式创建对象

function Car() {		// body...	}	Car.prototype.color='red';	Car.prototype.doors=4;	Car.prototype.mpg=23;	Car.prototype.drivers=['wang','xia'];	Car.prototype.showColor=function(){		alert(this.color);	}	var oCar1=new Car();	var oCar2=new Car();	oCar1.drivers.push('yun');	console.log(oCar2.drivers);

缺点:没有参数,属性指向对象,对象共享,Car1修改,Car2也会跟着修改

5.混合构造/原型方式

 
function  Car(sColor,iDoor,iMpg) {		this.color=sColor;		this.doors=iDoor;		this.mpg=iMpg;		this.drivers=new Array("Mike","Sue");	}	Car.prototype.showColor=function(){		alert(this.color)	}	var oCar1=new Car('red',4,23);	var oCar2=new Car('blue',5,24);	oCar1.drivers.push('yun');	console.log(oCar1.drivers);    console.log(oCar2.drivers);

构造函数定义非函数属性;原型定义函数属性

6.动态原型方式

 
function Car(sColor,iDoor,iMpg){		this.color=sColor;		this.door=iDoor;		this.mpg=iMpg;		this.driver=new Array('Mike','Sue');		if(typeof Car._initialized=="undefined"){			Car.prototype.showColor=function(){				alert(this.color);			}		}		Car._initialized=true;	}

转载于:https://www.cnblogs.com/wangxiayun/p/8116733.html

你可能感兴趣的文章
MySQL数据库从入门到实战应用(学习笔记二)
查看>>
种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
查看>>
【C++】攻克哈希表(unordered_map)
查看>>
转:【答学员问】有什么经验教训,是你在面试很多次之后才知道的?
查看>>
【redis入门】redis安装后相关知识串讲
查看>>
别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲
查看>>
第六天:网络处理(anet部分)-- redis源码慢慢学,慢慢看【redis6.0.6】
查看>>
通过域名获取主机IP -- struct addrinfo
查看>>
【C++】算法集锦(8):从两数和问题拓展到一百数和问题
查看>>
【C++】算法集锦(9):背包问题
查看>>
【C++】算法集锦(10)通俗讲kmp算法
查看>>
【C++】算法集锦(12):高楼扔鸡蛋
查看>>
【图解】拥塞控制
查看>>
线程上下文切换
查看>>
什么是服务熔断?
查看>>
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能
查看>>
C++面经总结之《Effective C++》(一)
查看>>
C++面经总结之《Effective C++》(二)
查看>>
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
查看>>
打开我的收藏夹 -- Python数据分析杂谈
查看>>