基于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学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
Node.js Buffer用法解读
May 18 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
Sep 04 Javascript
用Vue编写抽象组件的方法
May 06 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
javascript实现拼图游戏
Jan 29 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
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP设置进度条的方法
2015/07/08 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
js选项卡的实现方法
2015/02/09 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
python实现杨氏矩阵查找
2019/03/02 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
电子商务个人自荐信
2013/12/12 职场文书
军训心得体会
2013/12/31 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
MySQL如何使备份得数据保持一致
2022/05/02 MySQL