码迷,mamicode.com
首页 > 编程语言 > 详细

javascript面向对象程序设计

时间:2014-08-31 10:32:41      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:面向对象   javascript   面向对象编程   工厂模式   prototype   


       在学习js面向对象编程之前,首先需要知道什么是面向对象。面向对象语言都有类的概念,通过它可以创建具有相同属性和方法的对象。但js并没有类的概念,因此js中的对象和其他语言的对象有所不同。

       js对象可以定义为:”无需属性的集合,其属性可以是基本值、对象和函数。每个对象都是基于一个引用类型创建的。

       js创建对象有以下两种方法:

       1、创建一个Object实例:

        

var person = new Object();

       2、使用对象字面量:

      

 var person ={};

      3、工厂模式:

    

  function createPerson(name,age,job){
      var p = new Object();
     p.name=name;
     p.age=age;
     p.job=job;
    return p;
    }
   var p1=createPerson("jack",22,“front-end Engineer");
  var p2=.....;

    4.构造函数模式:

    

 function Person(name,age,job){
     this.name=name;
     this.age=age;
    this.job=job;
     this.sayName=function(){alert(this.name);};
     }
    var p1= new Person("jack",22,"front-end Engineer");
   var p2=...;

   这里暂停一下,因为构造函数模式比较重要,这里解释一下:这里实际上是经历了以下4个步骤:

    (1)创建一个对象;

     (2)将构造函数作用域赋给这个对象(所以this将指向这个新创建的对象)

    (3)执行里面的代码,为新对象添加属性;

    (4)返回新对象;

     上面创建的p1和p2都有一个constructor的属性,它指向Person。并且p1和p2即使Person的实例,同时也是Object的实例,因为所有对象都继承自Object。

     缺陷:每个方法都要在实例上重新创建一遍,js中的函数是对象,因此可以将函数转移到构造函数的外部:

    

 function Person(name,age,job){
           this.name=name;
          this.age=age;
          this.job=job;
          this.sayName=sayName;
    }
     fucntion sayName(){
        alert("this.name");
   }
      var p1=.....;
      var p2=....;

     5.原形模式:

     我们创建的函数都有一个prototype属性,它是一个指向一个对象的指针。

javascript面向对象程序设计

标签:面向对象   javascript   面向对象编程   工厂模式   prototype   

原文地址:http://blog.csdn.net/xiebaochun/article/details/38957189

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!