• JavaScript 类


    JavaScript里的Class(类),其实是通过Function来实现的。
    我们通过字面量或者构造函数来创建对象时,其实都只是给特定的一个对象赋属性和值。如果我们有多个对象,他们的属性都一样只是值不同,那就会写很多重复的语句,这时候类就很好用了。

    以下为构造函数方法创建类:

    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;
    };
    // 添加新方法decelerate
    ElectricCar.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);







  • 相关阅读:
    php 构造函数支持不同个数参数的方法
    浅谈管理系统操作日志设计(附操作日志类)
    PHP 远程文件下载的进度条实现
    PHP处理大文件下载
    c语言线性表
    c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
    c语言:从一组数据中选出可以组成三角形并且周长最长的三个数(简单)
    关于Staruml与powerdesigner启动使用中的问题
    Win7下安装Apache+PHP+MySQL
    <转>java编译问题:使用了未经检查或不安全的操作
  • 原文地址:https://www.cnblogs.com/rexmzk/p/2384868.html
Copyright © 2020-2023  润新知