JavaScript讀書筆記四

2021-08-31 06:21:54 字數 1665 閱讀 1961

建立物件最簡單方式就是建立乙個object例項,然後新增屬性和方法

var person = new object();

person.name = "miles";

person.age = 24;

person.job = "software engineer"

person.sayname = function() ;

person.sayname();

這種方法有個明顯的缺點:使用同乙個藉口建立很多物件,會產生大量的重複**

為了解決這個方法,我們可以使用工廠模式的一種遍體

function createperson(name, age, job) ;

return o;

}var person1 = createperson("miles", 24, "software engineer");

var person2 = createperson("jenny", 24, "doctor");

person1.sayname(); //"miles"

person2.sayname(); //"jenny"

工廠模式雖然解決了建立多個想死物件的問題,但沒有解決物件識別的問題(即怎樣知道乙個物件的型別)

隨著js的發展,建構函式模式出現了

function person(name, age, job) ;

}var person1 = new person("miles", 24, "software engineer");

var person2 = new person("jenny", 24, "doctor");

person1.sayname(); //"miles"

person2.sayname(); //"jenny"

建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。建構函式也是函式,只要通過new操作符來呼叫,那它就可以作為建構函式,如果不通過new,它跟普通函式沒區別。

//當作建構函式使用

var person = new person("miles", 24, "software engineer");

person.sayname(); // "miles"

//當作普通函式呼叫

person("jenny", 24, "doctor");

window.sayname(); // "jenny"

//在另乙個物件的作用於中呼叫

var o = new person();

person.call(o, "sean", 24, "engineer");

o.sayname(); // "sean"

當在全域性作用域中呼叫乙個函式時,this物件總是只想global物件。

建構函式的缺點就是每個方法都要在每個例項上重新建立一遍。也就是上面的例項中每乙個sayname不是同乙個function的例項

alert(person1.sayname() == person2.sayname()); // false
然後,建立兩個完全同樣任務的function例項沒有必要,所以可以通過把函式定義轉移到建構函式外部來解決這個問題

function person(name, age, job) 

function sayname()

與個人部落格同時更新中

《精通JavaScript》讀書筆記(四)

1.元素的尺寸 找出 元素的的高度和寬度可以很容易,也可以很困難,取決於它所處的不同場合,在大多數情況下,我們只需要利用前面自己封裝的getstyle函式即可,如下所示 var getheight function elem var getwidth function elem 但是這樣做會遇到2個...

JavaScript 語言精粹讀書筆記 第四章

當函式作為乙個物件的屬性時,被稱為方法,當方法被呼叫時,this被繫結到該物件。方法可以通過this訪問物件,this到物件的繫結發生在呼叫時。函式呼叫 當乙個函式並非乙個物件的屬性時,被作為函式呼叫。這時,this被繫結到全域性物件。因此,內部函式無法通過this訪問外部物件。可以通過var th...

JavaScript讀書筆記二

object例項的兩種方式 var person new object person.name miles person.age 24 var person 第二種方法中,屬性麼也可以是字串,效果一樣 var person 與 new object 相同 person.name miles pers...