热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于JavaScript类的使用详解_基础知识

JavaScript里的Class(类),其实是通过Function来实现的。我们通过字面量或者构造函数来创建对象时,其实都只是给特定的一个对象赋属性和值。如果我们有多个对象,他们的属性都一样只是值不同,那就会写很多重复的语句,这时候类就很好用了
以下为构造函数方法创建类:

代码如下:


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);

推荐阅读
author-avatar
小丽之家ko
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有