聊聊javascript中的面向对象

面向对象这个东西一直晕晕乎乎的,正好这段时间没有活,可以好好整理整理了!

1.什么是对象? 其实这个说起来一切东西都是对象

2.目前我们使用对象的时候,使用的是两种设计模式杂糅起来的 分别是原型模式和构造模式:

原型模式 需要了解的就是原型是什么?

原型:摘录自《javascript高级程序设计》

我自己的理解就是:本来属性 方法都是在构造函数中,但是现在用函数名.prototype{}里面放入属性和方法;这个就是原型对象

之后我们整个过程其实就是创建的实例和原型对象之间的关系,而不是原型对象和构造函数之间的关系

为什么要将属性方法在构造函数中提出来?因为如果放在构造函数中的话,那么每次新建一个实例的时候,就需要将构造函数中的方法在实例中创建一次,有点重复。

3.说道原型就必须将原型链也说一下了:

整个过程就是:一个构造函数通过prototype创建原型对象,一个原型对象用过new创建一个实例 这个过程就是原型链(其实可以理解为继承 实例继承了原型的方法和属性)

4.判断某个实例是否属于这个构造函数?

instanceof 检测父级或者父级的父级

constructor检测直接父级

5.直接的一个小例子:

function Person(name,age){

          this.name=name;

          this.age=age;

        };

        Person.prototype.sayname=function(){

          alert(this.name);

        };

        var person1=new Person(‘小明‘,12);

        person1.sayname();

6.this的使用?

谁调用这个函数,this就指向谁

改变this的指向:

call(this指向谁,ag1,ag2,...)

apply(this指向谁,[ag1,ag2...])

7.在面向对象中的继承:

    //父类 ---Person
    function Person(name,age){
        this.name=name;
        this.age=age;
    }
    Person.prototype.showName=function(){
        return this.name;
    };
    Person.prototype.showAge=function(){
        return this.age;
    };
    // 子类 ----Worker
    function Worker(name,age,job){
        Person.apply(this,arguments);
        this.job=job;
    }
    Worker.prototype=new Person();//
    Worker.prototype.constructor=Worker;

    Worker.prototype.showJob=function(){
        return this.job;
    };
    //使用
    var p1=new Person(‘a‘,10);
    var w1=new Worker(‘b‘,18,‘程序员‘);
    //alert(p1.showJob);
    //alert(w1 instanceof Person);
    alert(w1.constructor==Worker);

  

时间: 2024-10-23 15:25:30

聊聊javascript中的面向对象的相关文章

如何理解并学习javascript中的面向对象(OOP) [转]

如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的作者一样,写出属于自己优秀的类库(哪怕是基于 jquery的插件).那么,你请务必要学习javascript面向对象,否则你无法更灵活的使用javascript这门语言. 什么事闭包?到底什么是原型?(知道闭包和原型的,就算得上是javascript的高手了.但真正能够理解,并且灵活运用的人并不多)到底该如何学习javascript中的面向对象呢?在javascript这么语言正如日中天,相信不少人正在为

前端开发:面向对象与javascript中的面向对象实现(一)

前端开发:面向对象与javascript中的面向对象实现(一) 前言: 人生在世,这找不到对象是万万不行的.咱们生活中,找不到对象要挨骂,代码里也一样.朋友问我说:“嘿,在干嘛呢......”,我:“找不到对象!”,他:“就你那样也能找得到对象?”.我一脸黑线...... 废话不多说,今天博主要跟大家聊的是<面向对象与javascript中的面向对象实现>”. 面向对象理解: 面向对象是一种对现实世界理解和抽象的方法,是一种先进的程序设计理念,是一种比较抽象的,多形态的设计模式.我们可以这么理

直播开始:&#39;云榨汁机&#39;诞生记--聊聊JavaScript中的&#39;业务建模&#39;

闭包是JavaScript中的一个重要特性,在之前的博文中,我们说闭包是一个'看似简单,其实很有内涵'的特性.当我们用JavaScript来实现相对复杂的业务建模时,我们可以如何利用'闭包'这个特性呢?JavaScript中的'原型继承',又可以解决业务建模中的哪些问题呢?今天我们就通过一家'榨汁机工厂'生产设计'榨汁机'的故事,来聊一聊'闭包'和'原型继承'在业务建模中的作用.现在直播开始: 1> 工厂默认选用A型刀头方案制造榨汁机 例子当中我们主要涉及到2个函数:1.榨汁机的生产工厂(Jui

前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的影响,单单是自己的念想受到了一定得局限,想法不能够像平地而起的高楼大厦建成一样.可是那大楼也是有烂尾的呀,我觉得最重要的还是外在环境与个人观念的先决条件,决定了拖延症的症状的好坏,有那么一些人,它也有拖延症,但是它在拖的中间,想的更多,看的更远.事情在做的时候更加有条不紊,这拖延症这样看来,它也是好

javascript中的面向对象(object-oriented)编程

本文原发于我的个人博客,经多次修改放到csdn上,主要是做备份用,为了更好的阅读体验,请到我的个人博客上阅读. 最近工作一直在用nodejs做开发,有了nodejs,前端.后端.脚本全都可以用javascript搞定,很是方便.但是javascript的很多语法,比如对象,就和我们常用的面向对象的编程语言不同:看某个javascript开源项目,也经常会看到使用this关键字,而这个this关键字在javascript中因上下文不同而意义不同:还有让人奇怪的原型链.这些零零碎碎的东西加起来就很容

javascript 中的面向对象中比较好的资料

http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_

JavaScript中OOP——&gt;&gt;&gt;面向对象中的继承/闭包

  前  言  OOP  JavaScript中OOP-->>>面向对象中的继承/闭包 1.1面向对象的概念 使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.      >>> 继承的两方,发生在两个类之间. 1.2JS模拟实现继承的三种方式:        首先,了解一下call/apply/binb:通过函数名调用方法,强行将函数中的this指向某个对象:            call写法:  func.call(func的this指向的obj,参数

javaScript中的面向对象表示

我们知道,面向对象的语言都有一个特点,那就是一般都有类的概念,进而有类的属性和方法等概念. 然而javaScript中并没有类的概念,那我们怎么去通过这个语言本身去实现一些面向对象的特性呢? (1)一个最简单的方式 创建Object的实例,为它添加属性和方法 var car = new Object(); //创建实例 car.color = "red"; //为car这个对象增加颜色的属性 car.showColor= function(){ //car的方法 alert(this.

javascript 中的面向对象实现 如何封装

面向对象的手法来封装javascript ,javascript是没有类的概念的. 所以今天谈到的封装,其实就是用javascript的函数来实现的. 1 2 3 4 var People{ name:’一介布衣’, age:’30' }; 这就是javascript中的一个对象,里面封装了2个属性. 实例化一个对象的实例 people 1 2 var people=new People(); console.log(people.name,people.age);  //一介布衣,30 如果我