基于JavaScript 类的使用详解


Posted in Javascript onMay 07, 2013

以下为构造函数方法创建类:

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

Javascript 相关文章推荐
网页中CDATA标记的说明
Sep 12 Javascript
顶部缓冲下拉菜单导航特效的JS代码
Aug 27 Javascript
JsRender for index循环索引用法详解
Oct 31 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
Mar 01 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
js JSON.stringify()基础详解
Jun 19 Javascript
layui 阻止图片上传的实例(before方法)
Sep 26 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
JS+CSS实现动态时钟
Feb 19 Javascript
解读JavaScript中 For, While与递归的用法
May 07 #Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 #Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
May 07 #Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 #Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
May 07 #Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 #Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 #Javascript
You might like
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
PDO::setAttribute讲解
2019/01/29 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python 如何测试文件是否存在
2020/07/31 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
2014年上半年工作自我评价
2014/01/18 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
关于安全的演讲稿
2014/05/09 职场文书
2016年端午节寄语
2015/12/04 职场文书
关于环保的广播稿
2015/12/17 职场文书