[js高手之路]搞清楚面向对象,必须要理解对象在创…
2018-06-24 00:02:59来源:未知 阅读 ()
javascript面向对象编程方式,对于初学者来说,会比较难懂. 要学会面向对象以及使用面向对象编程,理解对象的创建在内存中的表示,至关重要.
首先,我们来一段简单的对象创建代码
1 var obj = new Object(); 2 obj.userName = 'ghostwu'; 3 obj.showUserName = function(){ 4 return obj.userName; 5 }; 6 var obj2 = new Object(); 7 obj2.userName = '卫庄'; 8 obj2.showUserName = function(){ 9 return obj2.userName; 10 }; 11 12 console.log( obj.showUserName() ); //ghostwu 13 console.log( obj2.showUserName() ); //卫庄
上例,我们创建了两个对象obj和obj2, 如果有多个类似对象,我们可以通过函数封装,这种函数封装方式,在设计模式里面叫工厂模式
1 function createObj( uName ){ 2 var obj = new Object(); 3 obj.userName = uName; 4 obj.showUserName = function(){ 5 return obj.userName; 6 } 7 return obj; 8 } 9 var obj1 = createObj( 'ghostwu' ); 10 var obj2 = createObj( '卫庄' ); 11 console.log( obj1.showUserName() ); //ghostwu 12 console.log( obj2.showUserName() ); //卫庄
工厂模式简化了创建多个类似对象的过程,但是却不能识别对象的类型,为了识别对象的创建类型,我们可以使用构造函数方式.
什么是构造函数方式?
其实我们js很多创建内存对象的方式 都是构造函数方式,如,数组: var arr = new Array ( 5 ), 时间对象: var date = new Date()
函数前面带上new关键字,是构造函数的外在表现
1 function CreateObj( uName ){ 2 this.userName= uName; 3 this.showUserName = function(){ 4 return this.userName; 5 } 6 } 7 var obj1 = new CreateObj( 'ghostwu' ); 8 var obj2 = new CreateObj( '卫庄' ); 9 10 console.log( obj1.showUserName() ); //ghostwu 11 console.log( obj2.showUserName() ); //卫庄
首先,明确几个事实:
- 任何函数前面都可以用new关键字
- 如果用了new关键字, 函数中的this指向的是 创建出来的对象, obj1造出来的时候,this指向的就是obj1, obj2造出来的时候,this指向的就是obj2.
- 构造函数把属性和方法直接赋值给this, 不需要创建一个对象( new Object() )
- 构造函数会自动return this
- 每new一个函数, 就会在内存中,生成一个独立的内存区域,用来存储当前的对象,以及对象上面的方法和属性
如果构造函数前面不用new去掉用,函数中的this指向的是window, 相当于给window加属性和方法,函数没有返回值,就是undefined
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Vue学习之路由vue-router传参及嵌套小结(十) 2019-08-14
- Vue学习之路由vue-router小结(九) 2019-08-14
- html.css.javascript 跟随着我一起走向前端之路 2019-05-22
- 数组去重之indexOf方法 2019-05-04
- 一个「学渣」从零开始的Web前端自学之路 2019-02-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash