博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>