建立物件最簡單方式就是建立乙個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) ;建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。建構函式也是函式,只要通過new操作符來呼叫,那它就可以作為建構函式,如果不通過new,它跟普通函式沒區別。}var person1 = new person("miles", 24, "software engineer");
var person2 = new person("jenny", 24, "doctor");
person1.sayname(); //"miles"
person2.sayname(); //"jenny"
//當作建構函式使用當在全域性作用域中呼叫乙個函式時,this物件總是只想global物件。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"
建構函式的缺點就是每個方法都要在每個例項上重新建立一遍。也就是上面的例項中每乙個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...