最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于javascript原型的修改與重寫(覆蓋)差別詳解

 更新時(shí)間:2016年08月31日 09:18:10   投稿:jingxian  
下面小編就為大家?guī)硪黄P(guān)于javascript原型的修改與重寫(覆蓋)差別詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

每個(gè)JavaScript函數(shù)都有prototype屬性(javascript對(duì)象沒有這個(gè)屬性),這個(gè)屬性引用了一個(gè)對(duì)象,這個(gè)對(duì)象就是原型對(duì)象。javascript允許我們修改這個(gè)原型對(duì)象。

修改有2種方式:

方式1:在原有的原型對(duì)象上增加屬性或者方法

function Person()
{
}

Person.prototype.add = function(){
	alert(this.name);
};

Person.prototype.name = "aty";

var p1 = new Person();
p1.add();//aty

方式2:重寫(覆蓋)原型對(duì)象

function Person()
{
}

Person.prototype = {
	add : function(){
		alert(this.name);
	},
	name : "aty"
}



var p2 = new Person();
p2.add();//aty

可以看到上面這2種方式都可以修改原型,那他們的差別究竟是什么呢?到底哪種方式才是推薦的的做法呢?

function Person()
{
}

function Animal()
{

}

var person = new Person();
var animal = new Animal();

// 修改原型
Person.prototype.say = function(){
	alert("person");
}

// 修改原型
Animal.prototype = {
	say : function(){
		alert("person");
	}
}

person.say();//person
animal.say();//Uncaught TypeError: undefined is not a function

如果是先創(chuàng)建對(duì)象,然后再修改原型,那么如果采用方式1,已經(jīng)創(chuàng)建的對(duì)象能夠正確訪問修改后的原型;如果采用方式2,已經(jīng)創(chuàng)建的對(duì)象無法訪問到修改后的原型。從這個(gè)角度來看,顯然方式1比方式2更好。為什么會(huì)這樣呢?

 

function Person()
{
}

function Animal()
{

}

var person = new Person();
var animal = new Animal();
alert(person.__proto__ === Person.prototype);//true
alert(animal.__proto__ === Animal.prototype);//true

// 修改原型
Person.prototype.say = function(){
	alert("person");
}

// 修改原型
Animal.prototype = {
	say : function(){
		alert("person");
	}
}

alert(person.__proto__ === Person.prototype);//true
alert(animal.__proto__ === Animal.prototype);//false

 很顯然這與java中"修改引用"和"修改引用指向的對(duì)象"很相似,效果也是一樣的。

以上這篇關(guān)于javascript原型的修改與重寫(覆蓋)差別詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

沈丘县| 衡南县| 天祝| 浠水县| 丹寨县| 张掖市| 手机| 昌黎县| 喀什市| 重庆市| 平乐县| 溧阳市| 黔西| 九寨沟县| 双牌县| 杭锦后旗| 革吉县| 平邑县| 格尔木市| 岑巩县| 阳江市| 杭锦旗| 遂平县| 温泉县| 上杭县| 陕西省| 兖州市| 香河县| 嘉鱼县| 吴堡县| 巢湖市| 醴陵市| 内江市| 邯郸县| 平陆县| 麻城市| 双柏县| 甘南县| 琼海市| 那曲县| 丹凤县|