簡單分析javascript面向對象與原型
本文主要內容參考來自JavaScript高級程序設計,面向對象與原型章節(jié):
1、工廠模式
ECMAScript 可以通過工廠模式來創(chuàng)建對象:
//工廠模式
function createObject(name, age) {
var obj = new Object(); //創(chuàng)建對象
obj.name = name; //添加屬性
obj.age = age;
obj.run = function () { //添加方法
return this.name + this.age + '運行中...';
};
return obj; //返回對象引用
};
var obj1 = createObject('Lee', 100); //創(chuàng)建第一個對象
var obj2 = createObject('Jack', 200); //創(chuàng)建第二個對象
//alert(obj1.run()); //打印第一個對象實例的run()方法
//alert(obj2.run()); //打印第二個對象實例的run()方法
//alert(typeof obj1);
//alert(typeof obj2);
alert(obj1 instanceof Object); //true
alert(obj2 instanceof Object); //true
通過工廠模式創(chuàng)建的對象,解決了重復實例化問題,但對象識別問題無法解決(所有對象均是Object),因此要想解決對象識別問題,我們采用下面的構造函數(shù)。
2、構造函數(shù)
//構造函數(shù)創(chuàng)建
function Person(name,age){ //所有構造函數(shù)對象都是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);//對象冒充,person3是Object類型,冒充Person類型
alert(person3.run());
構造函數(shù)中this:代表當前作用域對象的引用,如果在全局范圍this代表window對象,如果在構造函數(shù)體內,就代表當前構造函數(shù)所聲明的對象。
構造函數(shù)方法,及解決了重復實例化問題,有解決了對象識別問題,對比跟工廠方法不同之處可知:
1.構造函數(shù)方法沒有顯示的創(chuàng)建對象(new Object());
2.直接將屬性和方法值賦值給this;
3.沒有return 語句;
4.但是使用構造函數(shù)創(chuàng)建必須使用new運算符;
以上所述就是本文的全部內容了,希望大家能夠喜歡。
- js實現(xiàn)對ajax請求面向對象的封裝
- 詳解JavaScript基于面向對象之繼承實例
- 詳解JavaScript基于面向對象之繼承
- 詳解JavaScript基于面向對象之創(chuàng)建對象(2)
- 詳解JavaScript基于面向對象之創(chuàng)建對象(1)
- Javascript簡單實現(xiàn)面向對象編程繼承實例代碼
- 每天一篇javascript學習小結(面向對象編程)
- 初步了解javascript面向對象
- js面向對象之常見創(chuàng)建對象的幾種方式(工廠模式、構造函數(shù)模式、原型模式)
- JavaScript的面向對象編程基礎
- JavaScript面向對象之私有靜態(tài)變量實例分析
相關文章
jQuery移動和復制dom節(jié)點實用DOM操作案例
復制節(jié)點也是常用的DOM操作之一,例如很多購物網(wǎng)站的效果,本文將介紹jQuery移動和復制dom節(jié)點等實用DOM操作,有需的朋友可以參考下2012-12-12
jquery checkbox,radio是否選中的判斷代碼
jquery checkbox,radio是否選中的判斷代碼,需要的朋友可以參考下。2010-03-03
jQuery插件Easyui設置datagrid的pageNumber導致兩次請求問題的解決方法
這篇文章主要介紹了jQuery插件Easyui設置datagrid的pageNumber導致兩次請求問題的解決方法,較為詳細的描述了出現(xiàn)的問題、問題的原因及相應的解決方法,需要的朋友可以參考下2016-08-08

