javaScript--Object(2)

--从类的角度谈JavaScript对象
(由于JavaScript本身就一种若类型语言,本身是没有类的概念的为了理解而添加的)
JavaScript类的私有变量是无法创建的,但是它有一个是私有变量的约定
(属性一下划线开头定义则认为是私有的,类的定义者是不希望被访问的)。
通常都给一个方法作为接口让外界访问类属性

function Circle(radius)
{
    this ._radius = radius;
}

// 它可以更深的让人感受到函数也是对象.因此我们也可以为函数添加属性。
Circle.PI = 3.141596;
Circle.prototype.getRadius = function()
{
    return this._radius;
}

Circle.prototype.area = function()
{
    // this.PI是无法访问到PI值的.因为此时的this是当前被创建好的对象。
    return Circle.PI * this.getRadius() * this.getRadius();
}

Circle.prototype.girth = function()
{
    return 2 * Circle.PI * this.getRadius();
}

//重写Object的toString()方法:
Circle.prototype.toString=function(value)
{
   document.writeln("The result is: " +value);
}
var circle = new Circle(3);
circle.toString( circle.area());
circle.toString( circle.girth());

--类的继承
Object 是所有建立类的超类 ,所有创建的类都继承了Object的属性和方法,
于此同时创建的类也继承了prototype原形对象的熟悉和方法。

原因:prototype本身就是一个对象;是有Object()构造器进行创建 也就是说prototype对象本身就继承了来自Object.prototype的属性
function Rectangle(width, height)
{
    this.width = width;
    this.height = height;
}
Rectangle.area = function()
{
    return this.width * this.height;
}
Cuboid.prototype.superclass = Rectangle;
//根据一个原理:每一个创建的类都将继承Object和prototype完成类的继承
function Cuboid(len, wid, hei)
{
    this.len = len;
    Rectangle.call(this,wid,hei);//使用call方法调用Rectangle构造器
}
//这步是完成继承的关键点(Cuboid继承prototype,Cuboid.prototype=new Rectangle()自然Cuboid就继承Rectangle了)

Cuboid.prototype=new Rectangle();


Cuboid.prototype.volume=function()
{
    return this.width*this.height*this.len;
}
document.writeln(new Cuboid(10,10,10).volume());

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值