基于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 相关文章推荐
动态样式类封装JS代码
Sep 02 Javascript
IE bug table元素的innerHTML
Jan 11 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
排序算法的javascript实现与讲解(99js手记)
Sep 28 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
Sep 09 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
jQuery中$.each()函数的用法引申实例
May 12 Javascript
jQuery属性选择器用法示例
Sep 09 Javascript
Angular.Js的自动化测试详解
Dec 09 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
正则表达式基础与常用验证表达式
Jun 16 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
与数据库连接
2006/10/09 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
jquery maxlength使用说明
2011/09/09 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
python基础教程之常用运算符
2014/08/29 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
在python3中实现更新界面
2020/02/21 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
空指针到底是什么
2012/08/07 面试题
银行领导班子四风对照检查材料
2014/09/27 职场文书
走进科学观后感
2015/06/18 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript