基于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脚本
Dec 03 Javascript
MooTools 1.2介绍
Sep 14 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
js取得url地址参数实例
Feb 22 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
Oct 22 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
Nov 09 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
一次让你了解全部JavaScript的作用域
Jun 24 Javascript
微信小程序页面上下滚动效果
Nov 18 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 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
php生成随机数的三种方法
2014/09/10 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
phpStorm2020 注册码
2020/09/17 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python端口扫描简单程序
2016/11/10 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python猴子补丁知识点总结
2020/01/05 Python
Python ini文件常用操作方法解析
2020/04/26 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
营销与策划个人求职信
2013/09/22 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
项目安全员岗位职责
2015/02/15 职场文书
同意离婚答辩状
2015/05/22 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏