色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript中的原型

JavaScript是一種基于原型的編程語言,它的核心特點(diǎn)就是原型繼承。了解原型是理解JavaScript的關(guān)鍵,下面我們來詳細(xì)了解JavaScript中的原型。

JavaScript中的每個(gè)對(duì)象都有一個(gè)原型對(duì)象,原型對(duì)象是一個(gè)對(duì)象,其它對(duì)象可以通過它來獲取屬性和方法。我們可以使用對(duì)象字面量或者構(gòu)造函數(shù)來創(chuàng)建一個(gè)對(duì)象,這個(gè)對(duì)象將會(huì)自動(dòng)創(chuàng)建一個(gè)原型。

// 對(duì)象字面量創(chuàng)建
var person = {
name: 'Tom'
};
// 構(gòu)造函數(shù)創(chuàng)建
function Person() {}
var person1 = new Person();

當(dāng)我們?cè)L問一個(gè)對(duì)象的屬性或方法時(shí),JavaScript引擎會(huì)首先查找對(duì)象自身是否存在這個(gè)屬性或方法,如果不存在,就會(huì)去原型對(duì)象中找,如果還是找不到,就會(huì)去原型對(duì)象的原型對(duì)象中找,依次類推。

console.log(person1.name); // undefined
Person.prototype.name = 'Lucy';
console.log(person1.name); // Lucy

上面的例子中,我們首先創(chuàng)建一個(gè)空的構(gòu)造函數(shù)Person,然后使用它來創(chuàng)建一個(gè)對(duì)象person1。因?yàn)槲覀儧]有為person1設(shè)置任何屬性,所以訪問person1的name屬性得到的是undefined。

我們?yōu)闃?gòu)造函數(shù)Person的原型對(duì)象設(shè)置了一個(gè)name屬性,通過person1就可以訪問到它。這是因?yàn)楫?dāng)我們?cè)L問person1的name屬性時(shí),JavaScript引擎先在person1中查找該屬性,找不到,就去Person.prototype中查找。

原型對(duì)象的值也可以是對(duì)象,這個(gè)對(duì)象的原型對(duì)象同樣可以被訪問到。這樣,我們就可以實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用。例如,我們可以為Person.prototype設(shè)置一個(gè)address屬性,它是一個(gè)對(duì)象,該對(duì)象包含city和street屬性。

Person.prototype.address = {
city: 'Shanghai',
street: 'Nanjing Road'
};
console.log(person1.address.city); // Shanghai

上面的例子中,我們?yōu)镻erson.prototype設(shè)置了address屬性,其值為一個(gè)對(duì)象,它包含city和street屬性。當(dāng)我們?cè)L問person1的address屬性時(shí),就可以得到這個(gè)對(duì)象,并訪問到它的city屬性。

JavaScript中的原型繼承是通過把一個(gè)對(duì)象賦值給另一個(gè)對(duì)象的原型對(duì)象來完成的。我們可以使用Object.create()方法來創(chuàng)建一個(gè)具有指定原型的對(duì)象。

var person2 = Object.create(person1);
console.log(person2.name); // Lucy
console.log(person2.address.city); // Shanghai

上面的例子中,我們使用Object.create()方法創(chuàng)建了一個(gè)新對(duì)象person2,并指定它的原型對(duì)象為person1。現(xiàn)在,person2就可以繼承person1的所有屬性和方法,包括name和address屬性。

總結(jié)一下:JavaScript中的所有對(duì)象都有一個(gè)原型對(duì)象,在訪問對(duì)象的屬性和方法時(shí),會(huì)先在自身查找,如果找不到,就會(huì)去原型對(duì)象中查找,如果還是找不到,就會(huì)一直往上查找,直到找到為止。

這種原型繼承可以幫助我們避免重復(fù)定義和修改代碼,使得代碼更加靈活,具有更好的可維護(hù)性和擴(kuò)展性。