`
yes809
  • 浏览: 5085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

js入门实例构造函数\方法的定义和调用\原型对象

阅读更多
js入门实例の构造函数\方法的定义和调用\原型对象

<script language="javascript">
function circel(radius)
{//这个函数定义了类自身,下面r是构造函数定义并并初始化的一个实例变量
    this.r=radius;
}
//该属性是类变量,他属于构造函数的一个属性
circel.PI=3.14159;
function area()
{//这个当然是计算圆面积的公式了
    return this.PI * this.r * this.r;
}
//下面我们通过把函数赋给构造函数的圆型对象使他成为一个实例方法,
//为了与Navigator3 兼容,我们必须在原型对象生成之前创建并抛弃一个对象
new circel(0);
circel.prototype.area=area;
//以下是另一个函数,他将两个参数对比,并返回较大的一个
function circel_max(a,b)
{
    if(a.r > b.r)
        return a;
    else
        return b;
}
//由于该函数比较的是两个对象,所以将他看作是对单个Circel实例方法操作是没有意义的
//但我们也不希望成为一个独立的函数,所以将他赋以一个构造函数,使他成为一个类方法
circel.max=circel_max;
//下面的代码使用了circel的各个字段
var c=new circel(1.0);        //创建circel类的一个实例
c.r=2.2;                    //设置实例的一个变量r
var a=c.area();                //调用实例的area方法
var x=Math.exp(circel.PI);    //在我们自己的计算中使用变量PI
var d=new circel(1.2);        //创建另一个circel实例
var bigger=circel.max(c,d);//使用类方法circel.max
</script>
JScript.js文件
/**//* JScript 文件
复数就是一个虚数和一个虚数的和,虚数i是-1的平方根
*/

/**//*定义类的第一步是定义该类的构造函数,资格构造函数要初始化对象的所有实例函数
这些属性是核心的“状态变量”是他们使类的每个实例互不相同
*/

function JScript(real,img)
{
    this.x=real;//实数部分
    this.y=img;//虚数部分
}

/**//*定义函类的第二步是在构造函数的原型对象中定义他的实例方法(或者其他的属性)
该对象定义的任何属性都将被这个类的所有实例继承
注意实例方法对this关键字 的隐式操作,许多方法都不需要其他的参数
*/

//返回复数的大小,他的定义是从原点(0,0)到复平面的距离
JScript.prototype.magnitude=function()
{
    return Math.sqrt(this.x * this.x + this.y * this.y);
};
//返回复数的相反数
JScript.prototype.negative=function()
{
    return new JScript(-this.x ,-this.y);
};
//以一种有效的方式把JScript对象装换成字符串,这将是把JScript对象用作字符串时候调用的函数
JScript.prototype.toString=function()
{
    return "{"+ this.x +","+ this.y +"}";
};
//返回一个复数的实数部分,该函数是在将JScript对象作为原始值处理时调用
JScript.prototype.valueOf=function() {return this.x;};

/**//*定义类的第三步是定义类方法。
常量和其他类变量作为函数构造自身的属性(而不是构造函数的原型对象的属性)
注意静态方法,没有使用this关键字,因为他们只对参数进行操作
*/
//计算两个复数的和并返回结果
JScript.add()=function(a,b)
{
    return new JScript(a.x + b.x ,a.y + b.y);
};
//用一个复数减另一个复数,返回结果
JScript.subtract()=function(a,b)
{
    return new JScript(a.x - b.x , a.y - b.y);
};
//计算两个复数的乘积,并返回结果
JScript.multiply()=function(a,b)
{
    return new JScript(a.x * b.x - a.y * b.y , a.x * b.x + x.y * b.y);
};

/**//*下面是一些有用的预定义复数,他们被定义成了类变量,这样就能够被用着常量(注意,他们实际并不是只读的)
*/

JScript.zero=new JScript(0,0);
JScript.one=new JScript(1.0);
JScript.i=new JScript(0.1);


分享到:
评论

相关推荐

    构造函数和实例

    这意味着所有通过同一个构造函数创建的实例都能够访问到原型对象中定义的方法和属性。 在之前的例子中,通过new操作符调用构造函数F,不仅创建了一个名为f的新实例,而且还隐式地将f的内部原型链接到了F的...

    js定义类 对象 构造函数,类的继承

    在JavaScript中,类(Class)、对象(Object)和构造函数(Constructor)是面向对象编程的基础。这篇文章将深入探讨这三个概念,以及如何实现类的继承。 首先,让我们理解什么是JavaScript中的对象。在JavaScript中...

    深入理解javascript构造函数和原型对象

    在深入理解JavaScript的过程中,构造函数和原型对象是两个核心概念。JavaScript是一种基于对象(Object-based)和原型(Prototype-based)的语言,其对象模型与传统的基于类(Class-based)语言有所不同。理解构造...

    一文秒懂JavaScript构造函数、实例、原型对象以及原型链

    通过构造函数定义对象的结构,实例化对象,利用原型对象共享方法,以及原型链实现属性和方法的查找,JavaScript能够有效地管理和复用对象的特性。理解和熟练运用这些概念对于编写高效、可维护的JavaScript代码至关...

    jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承

    通过使用构造函数和原型链,我们不仅能够创建可复用的轮播对象,还能够保证这些对象的方法不会相互冲突,因为我们是通过new操作符在实例化时创建了独立的对象副本。这样,每个实例都有自己的方法副本,无论在页面上...

    Javascript 设计模式之构造函数模式.zip

    JavaScript的每个函数都有一个`prototype`属性,用于定义对象实例共享的方法。这些方法可以通过所有实例访问,而不是每个实例都存储一份副本,节省内存: ```javascript Person.prototype.sayHello = function() {...

    JavaScript中函数对象调用模式总结

    我们可以通过 `prototype` 属性来修改构造函数的原型,从而影响实例对象。 了解并熟练掌握这些调用模式和相关概念,对于编写高效、可维护的JavaScript代码至关重要。在实际开发中,我们常常需要结合这些模式来设计...

    js 面向对象实例

    面向对象编程在JavaScript中的实现主要基于以下三个概念:构造函数、原型和实例化。构造函数是一个特殊类型的函数,用于创建和初始化一个新对象。当你定义一个构造函数时,实际上是在定义一个对象类型。例如: ```...

    JavaScript原型对象、构造函数和实例对象功能与用法详解

    JavaScript中的面向对象编程主要是通过构造函数和原型对象来实现的,而实例对象则是通过构造函数和原型对象创建的具体对象。 构造函数是一种特殊类型的函数,它被用来初始化新创建的对象。在JavaScript中,我们通常...

    javascript工厂模式和构造函数模式创建对象方法解析.docx

    ### JavaScript工厂模式与构造函数模式创建对象方法解析 #### 一、工厂模式 在JavaScript中,工厂模式是一种常用的设计模式,用于封装创建对象的过程。它通过一个函数来创建具有相似特性的多个对象实例,这些对象...

    js原型链详解

    如果在Person的实例上找不到某个属性或方法,JavaScript会查找该实例的__proto__,也就是其构造函数的prototype所指向的原型对象,若仍未找到,则会继续往上查找,直到到达原型链的末端(通常是指向Object.prototype...

    浅谈js构造函数的方法与原型prototype

    在JavaScript编程中,构造函数和原型prototype是实现面向对象编程的关键特性,它们允许开发者以一种更加结构化和模块化的方式组织代码。为了深入理解这两个概念及其用途,下面将详细阐述构造函数和原型的相关知识点...

    构造函数以及原型基础

    - 当构造函数作为普通函数调用时,`this`会指向`window`对象(在浏览器环境中),所有属性和方法都将添加到`window`中。 #### 传统构造函数的问题及解决方案 - **问题**: 如果将方法写入构造函数内部,每次创建...

    javascript 构造函数方式定义对象

    当我们使用`new`关键字调用构造函数时,会创建一个新的对象实例,并执行构造函数内部的代码来初始化这个新对象的属性和方法。 示例: ```javascript function Person(name) { this.name = name; } var person...

    js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式).docx

    - **可读性强**:通过 `new` 关键字调用构造函数,明确指出这是在创建对象实例。 - **规范性**:首字母大写及 `new` 关键字的使用使得代码更符合约定。 **缺点**: - **方法重复创建**:每个实例都会拥有自己的一份...

    原型链和构造函数.docx

    通过将一个构造函数的`prototype`指向另一个构造函数的实例,可以让第一个构造函数的实例继承第二个构造函数的属性和方法。如: ```javascript function Name() { this.name = function() { console.log('cb'); ...

    javascript面向对象之定义成员方法实例分析.docx

    构造函数内部定义的方法适用于每个实例需要独立的方法副本的情况,而通过原型链定义的方法则更适合所有实例共享相同方法的情况。动态添加成员方法则提供了更大的灵活性,但也需要注意避免潜在的问题。理解这些概念...

    详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式).docx

    在JS中,有三种基本方式来创建对象:工厂模式、构造函数模式和原型模式。这三种模式各自有其特点和适用场景,下面将逐一进行详细讲解。 1. **工厂模式**: 工厂模式在面向对象编程中是一个常用的设计模式,其目的...

    JavaScript定义类或函数的几种方式小结

    另外,构造函数中不能初始化属性,因为对象的属性是在构造函数调用之后通过原型设置的。 4. 混合的构造函数/原型模式 混合构造函数/原型模式结合了构造函数和原型两种方式的优点。通过构造函数定义对象的属性,通过...

    javascript面向对象快速入门实例.docx

    与其他面向对象语言不同,JavaScript中对象的属性可以动态添加,无需预先定义在构造函数或原型中。例如,我们可以为`cat1`对象添加`name`、`age`和`color`属性: ```javascript cat1.name = "小狗"; cat1.age = 4; ...

Global site tag (gtag.js) - Google Analytics