js,物件導向程式設計

2021-08-27 19:08:12 字數 2278 閱讀 5531

工廠模式:

function createperson(name,age,job); 

o.name = name;

o.age = age;

o.job = job;

o.sayname = function();

return o;

} var tanya = createperson("tanya","30","female");

var ansel = createperson("ansel","30","male");

tanya.sayname();

ansel.sayname();

這裡先定義o為乙個空的物件,然後為o設定了一堆屬性。其實也可以直接給o屬性的嘛,所以如果這樣寫也是ok的。

function createperson(name,age,job) 

}; return o;

} var tanya = createperson("tanya","30","female");

var ansel = createperson("ansel","30","male");

tanya.sayname();

ansel.sayname();

還有一種辦法是利用無敵的this,因為this就表示當前執行時的物件,將建構函式this的作用域指向新物件,將當前執行物件的屬性和方法都賦給新物件,這樣物件模式稱為建構函式模式

function person(name,age,job); 

} var tanya = new person("tanya","30","female");

var ansel = new person("ansel","30","male");

tanya.sayname();

ansel.sayname();

在這個例子中,tanya和ansel都有乙個constructor屬性,該屬性指向person。

考慮一下如下的情況:

function person(name,age,job); 

} person("tanya","30","female");

person("ansel","30","male");

window.sayname();

window.sayname();

發現兩次彈出的都是ansel,這是因為不用new的話,就不是乙個person的例項,而僅僅在執行函式。而在全域性作用域呼叫乙個函式時this總是指向global物件。而global物件在瀏覽器中就是window物件。

function person(name,age,job); 

} var olivia = {};

person.call(olivia,"tanya","30","female");

olivia.sayname();

var philip = {}

philip.sayname();

原型模式就要考慮原型鏈了,分析一下,sayname方法在例項中被重複定義了兩次,但其實沒有必要創造兩個一樣的副本。使用原型方法,可以使是tanya和ansel的共享乙個sayname方法。

於是原型模式的寫法如下:

function person(name,age,job) 

person.prototype.sayname= function();

var tanya = new person("tanya","30","female");

var ansel = new person("ansel","30","male");

tanya.sayname();

ansel.sayname();

實際應用時,不是一成不變的套用某種模式,活學活用。需要共享方法的時候就用原型模式,需要使用副本的時候就用構造模式,還可以結合起來,把所有資訊都封裝在建構函式中,而通過在建構函式中初始化原型,使得物件保持了同時使用建構函式和原型的優點

function person(name,age,job); 

} }

var tanya = new person("tanya","30","female");

var ansel = new person("ansel","30","male");

ansel.sayname = function ()

tanya.sayname();

ansel.sayname();

JS物件導向程式設計 物件

一般面向過程的寫法都是寫很多function,壞處 1.復用不好 2.函式名稱容易重複衝突 下面介紹物件導向的寫法 在js中每個函式function都是乙個物件。比如,下面這個就是乙個物件,我們在使用的時候就可以當作物件來使用。function helloworld 使用下面測試函式 呼叫該函式就會...

js物件導向程式設計

js物件導向程式設計 js使用建構函式作為物件的模板 var vehicle function 生成物件例項 var v new vehicle v.price 1000 傳引數的建構函式 var vehicle function value var v new vehicle 500 protot...

js物件導向程式設計

1.直接建立物件 集中例項化問題 2.工廠模式 物件識別問題 3.建構函式模式 例項化物件的方法在每個例項上都要建立一遍 建構函式模式 function student name var student1 new student 張三 每個例項物件對應乙個引用,所以例項化物件時,所有屬性與方法都會重...