基于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 相关文章推荐
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
解析javascript 浏览器关闭事件
Jul 08 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
Nov 03 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
微信小程序获取循环元素id以及wx.login登录操作
Aug 17 Javascript
angular4中关于表单的校验示例
Oct 16 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
May 08 Javascript
ES6 async、await的基本使用方法示例
Jun 06 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
JScript中的undefined和"undefined"的区别
2007/03/08 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
Python作用域用法实例详解
2016/03/15 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
python实现实时视频流播放代码实例
2020/01/11 Python
django迁移文件migrations的实现
2020/03/31 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
彪马日本官网:PUMA日本
2019/01/31 全球购物
新郎父亲婚宴答谢词
2014/01/11 职场文书
偷看我的初中毕业鉴定
2014/01/29 职场文书
《藏戏》教学反思
2014/02/11 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
食品安全处置方案
2014/06/14 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
计划生育证明格式范本
2014/09/12 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
趵突泉导游词
2015/02/03 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript