基於JavaScript 類的使用詳解

來源:互聯網
上載者:User

以下為建構函式方法建立類:

複製代碼 代碼如下:function className (prop_1, prop_2, prop_3) {
this.prop1 = prop_1;
this.prop2 = prop_2;
this.prop3 = prop_3;}

有了上面的類,我們就可以為類建立執行個體:
複製代碼 代碼如下:var obj_1 = new className(v1, v2, v3)
var obj_2 = new className(v1, v2, v3)

我們也可以給類添加方法(method),其實就是Function裡的Function。複製代碼 代碼如下:function className (prop_1, prop_2, prop_3) {
this.prop1 = prop_1;
this.prop2 = prop_2;
this.prop3 = prop_3;
this.func = function new_meth (property) {
//coding here
}
}

屬性訪問域:

在JavaScript裡,對象的屬性預設都是全域的,也就是說,對象內外都可以直接存取該屬性。上面例子裡this.prop1, this.prop2, this.prop3都是全域屬性。

如何定義私人屬性呢?使用var,下面的例子裡,price就變成了私人屬性!

複製代碼 代碼如下:function Car( listedPrice, color ) {
var price = listedPrice;
this.color = color;
this.honk = function() {
console.log("BEEP BEEP!!");
};
}

如果你想訪問私人屬性,那麼你可以在對象內添加一個方法去返回這個私人屬性,因為方法在對象內,所以可以訪問對象的私人屬性。在外部調用該方法,就可以訪問到這個私人屬性了。但是在方法裡,就不能再用this.了,像上面的例子,要訪問price,就可以在對象裡添加方法:複製代碼 代碼如下:this.getPrice = function() {
//return price here!
return price;
--------------------------------------------------------------------------------

繼承:

使用以下文法繼承:

複製代碼 代碼如下:ElectricCar.prototype = new Car();

使用instanceOf檢查對象是否某對象的繼承,返回true或false。複製代碼 代碼如下:myElectricCar instanceof Car

給繼承後的對象添加方法:複製代碼 代碼如下:// 使用建構函式定義一個新的對象
function ElectricCar( listedPrice ) {
this.electricity=100;
var price = listedPrice;
}

// 使新對象繼承Car
ElectricCar.prototype = new Car();

// 為新對象添加方法
ElectricCar.prototype.refuel = function(numHours) {
this.electricity =+ 5*numHours;
};

重寫原型對象的值或方法:
當我們繼承原型對象後,我們會繼承原型的值和方法。但有的時候,我們的對象值或方法可能會不同,這時候,我們可以通過重寫原型對象的值和方法來改變新對象的內容複製代碼 代碼如下:function Car( listedPrice ) {
var price = listedPrice;
this.speed = 0;
this.numWheels = 4;

this.getPrice = function() {
return price;
};
}

Car.prototype.accelerate = function() {
this.speed += 10;
};

function ElectricCar( listedPrice ) {
var price = listedPrice;
this.electricity = 100;
}
ElectricCar.prototype = new Car();

// 重寫accelerate方法
ElectricCar.prototype.accelerate = function() {
this.speed += 20;
};
// 添加新方法decelerateElectricCar.prototype.decelerate = function(secondsStepped) {
this.speed -= 5*secondsStepped;
};

myElectricCar = new ElectricCar(500);

myElectricCar.accelerate();
console.log("myElectricCar has speed " + myElectricCar.speed);
myElectricCar.decelerate(3);
console.log("myElectricCar has speed " + myElectricCar.speed);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.