基于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 相关文章推荐
增强的 JavaScript 的 trim 函数的代码
Aug 13 Javascript
javascript 动态调整图片尺寸实现代码
Dec 28 Javascript
js null undefined 空区别说明
Jun 13 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
Vue中的作用域CSS和CSS模块的区别
Oct 09 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php 生成WML页面方法详解
2009/08/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP7匿名类用法分析
2016/09/26 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python3.5安装python3-tk详解
2019/04/26 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
pycharm永久激活超详细教程
2020/10/29 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
质量工程师岗位职责
2013/11/16 职场文书
财务工作者先进事迹材料
2014/01/17 职场文书
顶撞领导检讨书
2014/01/29 职场文书
cf收人广告词
2014/03/14 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
小学班主任寄语大全
2014/04/04 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
小学班主任自我评价
2015/03/11 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android