国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript繼承(上)——對象構(gòu)建介紹

2024-05-06 14:20:55
字體:
供稿:網(wǎng)友
Javascript中存在“類”么?

萬物皆對象
Javascript中除了基本數(shù)據(jù)(Undefined、Null、Boolean、Number、String),其他都是對象(Object)。
實際上,Javascript中的對象是數(shù)據(jù)與功能的集合。例如我們知道:
代碼如下:
var foo = new Function("alert('hello world!')");
foo();

可見foo是一個函數(shù),也是一種對象。再比如說:
代碼如下:
function foo(){
//do something
}

foo.data = 123;
foo["data2"] = "hello";

alert(foo.data);
alert(foo.data2);

函數(shù)也可以像對象一樣添加屬性。
對象的構(gòu)建
一般我們用構(gòu)造函數(shù)來構(gòu)建對象,但如果沒有構(gòu)造函數(shù),我們也有辦法構(gòu)建我們想要的對象:
代碼如下:
function creatPerson(__name, __sex, __age){
return {
name: __name,
sex: __sex,
age: __age,
get: function(__key){
alert(this[__key]);
}
};
}

var Bob = creatPerson("Bob", "male", 18);
Bob.get("name"); //Bob
Bob.get("sex"); //male
Bob.get("age"); //18

但是這不夠,我希望方法是可以共享的。比如我再用該函數(shù)創(chuàng)建一個Tom對象,get函數(shù)就又被創(chuàng)建了一次,這明顯地浪費了我的內(nèi)存。
導(dǎo)入共享資源
因為我們知道函數(shù)也是對象,所以我們可以把需要共享的方法或?qū)傩苑旁诜旁谒吧砩稀保?
代碼如下:
function creatPerson(__name, __sex, __age){
var common = arguments.callee.common;
return {
//自身的屬性
name: __name,
sex: __sex,
age: __age,
//自身的方法
sayhi: function(){alert("hi");},
//共享的方法
get: common.get,
getType: common.getType,
//共享的屬性
type: common.type
};
}
creatPerson.common = {
get:function(__key){
alert(this[__key]);
},
getType: function(){
alert(this.type);
},
type: "Person"
};

var Bob = creatPerson("Bob", "male", 18);
Bob.get("name"); //Bob
Bob.get("sex"); //male
Bob.getType(); //Person

于是我們就用蹩腳的方法,成功的創(chuàng)建了一個擁有自有屬性方法和共享屬性方法的對象。但實際上,Javascript就是這么蹩腳地創(chuàng)建對象的。
其實共享屬性沒有真正實現(xiàn),因為這個共享屬性,依然只是一個副本。這并不是我們真正希望的共享屬性。

new關(guān)鍵字
和上面的“對象的構(gòu)建”相同,new的目的是創(chuàng)建對象的自有屬性和方法。例如:
代碼如下:
function Person(__name, __sex, __age){
this.name = __name;
this.sex = __sex;
this.age = __age;
this.get = function(__key){
alert(this[__key]);
};
}

var Bob = new Person("Bob", "male", 18);
Bob.get("name"); //Bob
Bob.get("sex"); //male
Bob.get("age"); //18

原型(Prototype)
Javascript的作者用了和上面“導(dǎo)入共享資源”的方法差不多。既然函數(shù)也是對象,那么把需要共享的“東東”放在他“身上”吧:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 吉首市| 青海省| 竹溪县| 常德市| 射阳县| 阿合奇县| 齐河县| 故城县| 临潭县| 宜川县| 读书| 宾川县| 庆阳市| 崇左市| 青神县| 武邑县| 开封县| 南澳县| 阜城县| 宁南县| 新巴尔虎左旗| 吉木乃县| 益阳市| 安吉县| 顺义区| 本溪市| 衡阳县| 连城县| 汉源县| 泗阳县| 黄骅市| 霸州市| 武隆县| 木兰县| 曲松县| 衡东县| 稷山县| 罗田县| 察雅县| 泾川县| 牡丹江市|