簡(jiǎn)單分析javascript面向?qū)ο笈c原型
本文主要內(nèi)容參考來(lái)自JavaScript高級(jí)程序設(shè)計(jì),面向?qū)ο笈c原型章節(jié):
1、工廠模式
ECMAScript 可以通過(guò)工廠模式來(lái)創(chuàng)建對(duì)象:
//工廠模式
function createObject(name, age) {
var obj = new Object(); //創(chuàng)建對(duì)象
obj.name = name; //添加屬性
obj.age = age;
obj.run = function () { //添加方法
return this.name + this.age + '運(yùn)行中...';
};
return obj; //返回對(duì)象引用
};
var obj1 = createObject('Lee', 100); //創(chuàng)建第一個(gè)對(duì)象
var obj2 = createObject('Jack', 200); //創(chuàng)建第二個(gè)對(duì)象
//alert(obj1.run()); //打印第一個(gè)對(duì)象實(shí)例的run()方法
//alert(obj2.run()); //打印第二個(gè)對(duì)象實(shí)例的run()方法
//alert(typeof obj1);
//alert(typeof obj2);
alert(obj1 instanceof Object); //true
alert(obj2 instanceof Object); //true
通過(guò)工廠模式創(chuàng)建的對(duì)象,解決了重復(fù)實(shí)例化問(wèn)題,但對(duì)象識(shí)別問(wèn)題無(wú)法解決(所有對(duì)象均是Object),因此要想解決對(duì)象識(shí)別問(wèn)題,我們采用下面的構(gòu)造函數(shù)。
2、構(gòu)造函數(shù)
//構(gòu)造函數(shù)創(chuàng)建
function Person(name,age){ //所有構(gòu)造函數(shù)對(duì)象都是Object
this.name=name;
this.age=age;
this.run=function(){
return this.name+this.age+"ing...";
};
};
var person1=new Person('zhu1',100);
var person2=new Person('zhu2',200);
alert(person1.run());
alert(person2.run());
alert(person1 instanceof Object); //ture
alert(typeof person2); //Person
alert(person2 instanceof Person); // true
var person3=new Object();
Person.call(person3,'zhu3',300);//對(duì)象冒充,person3是Object類(lèi)型,冒充Person類(lèi)型
alert(person3.run());
構(gòu)造函數(shù)中this:代表當(dāng)前作用域?qū)ο蟮囊?,如果在全局范圍this代表window對(duì)象,如果在構(gòu)造函數(shù)體內(nèi),就代表當(dāng)前構(gòu)造函數(shù)所聲明的對(duì)象。
構(gòu)造函數(shù)方法,及解決了重復(fù)實(shí)例化問(wèn)題,有解決了對(duì)象識(shí)別問(wèn)題,對(duì)比跟工廠方法不同之處可知:
1.構(gòu)造函數(shù)方法沒(méi)有顯示的創(chuàng)建對(duì)象(new Object());
2.直接將屬性和方法值賦值給this;
3.沒(méi)有return 語(yǔ)句;
4.但是使用構(gòu)造函數(shù)創(chuàng)建必須使用new運(yùn)算符;
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- js實(shí)現(xiàn)對(duì)ajax請(qǐng)求面向?qū)ο蟮姆庋b
- 詳解JavaScript基于面向?qū)ο笾^承實(shí)例
- 詳解JavaScript基于面向?qū)ο笾^承
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象(2)
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象(1)
- Javascript簡(jiǎn)單實(shí)現(xiàn)面向?qū)ο缶幊汤^承實(shí)例代碼
- 每天一篇javascript學(xué)習(xí)小結(jié)(面向?qū)ο缶幊蹋?/a>
- 初步了解javascript面向?qū)ο?/a>
- js面向?qū)ο笾R?jiàn)創(chuàng)建對(duì)象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- JavaScript的面向?qū)ο缶幊袒A(chǔ)
- JavaScript面向?qū)ο笾接徐o態(tài)變量實(shí)例分析
相關(guān)文章
基于Jquery代碼實(shí)現(xiàn)手風(fēng)琴菜單
這篇文章主要介紹了基于Jquery代碼實(shí)現(xiàn)手風(fēng)琴菜單,代碼簡(jiǎn)單易懂,需要的朋友參考下2015-11-11
jQuery移動(dòng)和復(fù)制dom節(jié)點(diǎn)實(shí)用DOM操作案例
復(fù)制節(jié)點(diǎn)也是常用的DOM操作之一,例如很多購(gòu)物網(wǎng)站的效果,本文將介紹jQuery移動(dòng)和復(fù)制dom節(jié)點(diǎn)等實(shí)用DOM操作,有需的朋友可以參考下2012-12-12
jQuery實(shí)現(xiàn)TAB選項(xiàng)卡切換特效簡(jiǎn)單演示
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)TAB選項(xiàng)卡切換特效簡(jiǎn)單演示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
jquery checkbox,radio是否選中的判斷代碼
jquery checkbox,radio是否選中的判斷代碼,需要的朋友可以參考下。2010-03-03
jQuery插件Easyui設(shè)置datagrid的pageNumber導(dǎo)致兩次請(qǐng)求問(wèn)題的解決方法
這篇文章主要介紹了jQuery插件Easyui設(shè)置datagrid的pageNumber導(dǎo)致兩次請(qǐng)求問(wèn)題的解決方法,較為詳細(xì)的描述了出現(xiàn)的問(wèn)題、問(wèn)題的原因及相應(yīng)的解決方法,需要的朋友可以參考下2016-08-08
Jquery實(shí)現(xiàn)圖片左右自動(dòng)滾動(dòng)示例
圖片左右滾動(dòng)的效果想必大家都有見(jiàn)到過(guò)吧,其實(shí)很簡(jiǎn)單。在本文將為大家介紹下使用Jquery是如何實(shí)現(xiàn)圖片左右自動(dòng)滾動(dòng)的,感興趣的朋友可以參考下2013-09-09

