`
zhangyaochun
  • 浏览: 2595986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

js---面向对象OOP浅谈

阅读更多

对象化编程-------简单地去理解就是把javascript能涉及到的范围分成各种对象,对象下面再次划分对象。编程出发点多是对象,或者说基于对象。所说的对象既包含变量,网页,窗口等等

 

  1. 对象的含义
          对象可以是文字,表单等等。对象包含以下:

  • 属性-------对象的某些特定的性质
  • 方法-------对象能做的事情
  • 事件-------能响应发生在对象上的事情
     注意:对象只是一种特殊的数据

     2.  基本对象
         
         我们一般划分的角度还是从数据类型这方面

  • Number 
  • String
  • Array
  • Math
  • Date   

这边我只是简单地罗列出来部分,具体的可以参考http://www.w3school.com.cn/js/js_obj_intro.asp

 

不过我这边还是想讲一下比较流行的一道前端面试题,也是我当初来百度面试的时候问我的(题目的来源好像是方荣大侠的某个web前端研发工程师编程能力成长之路的文档里面的)

废话少说------出题:

                       “输出字符串--今天是星期几”

 

答案1:

 

var _str = "";
var _today = new Date().getDay();
if(_today == 0){
   _str = "今天是星期日";
}else if(_today  == 1){
  _str = "今天是星期一";
}else if(_today  == 2){
  _str = "今天是星期二";
}else if(_today  == 3){
  _str = "今天是星期三";
}else if(_today  == 4){
  _str = "今天是星期四";
}else if(_today  == 5){
  _str = "今天是星期五";
}else if(_today  == 6){
  _str = "今天是星期六";
}

 答案2:

 

var _str ="今天是星期";
var _today=new Date().getDay();
switch(_today){
      case 0:
           _str += "日";
           break;
      case 1:
           _str += "一";
           break;
      case 2:
           _str += "二";
           break;
      case 3:
           _str += "三";
           break;
      case 4:
           _str += "四";
           break;
      case 5:
           _str += "五";
           break;
      case 6:
           _str += "六";
           break;

}

 答案3:

 

var _arr = new Array("日","一","二","三","四","五","六");
var _today = new Date().getDay();
var _str = "今天是星期"+_arr[_today ];

 

 答案4:

 

var _str = "今天是星期"+"日一二三四五六".charAt(new Date().getDay());

 3. 

下面介绍创建类和对象的模式

  • 简单方式
        
  
var people ={};
       people.name = "steven";
      people.age = 23;
      people.getName = function(){
           return "People's name is "+ this.name;
     };
console.log(people.getName());          //People's name is steven
console.log(people.age);                    //23
 


不好的地方就是:在创建多个对象的场景下会产生 很多冗余的代码,耦合度不高
 

  • 工厂模式下
function makePeople(name,age,job){
     var _obj = {};
     _obj.name = name;
     _obj.age =age;
     _obj.job = job;
    _obj.getName = function(){
        return "People's name is "+ this.name;
   } 
    return _obj;
}

var webdesigner = makePeople("steven",23,"wendesigner");
console.log(webdesigner.getName );       //People's name is steven
console.log(webdesigner.job)                //wendesigner
 

不好的地方就是:实例化比较频繁

  • 原型模式(prototype)下
function People(){};
People.prototype = {
       constructor :People,
       name:"steven",
       age:23,
       job:"webdesigner",
       getName:function(){
             return "People's name is "+this.name;
      }
}

var webdesign = new People();
var carman = new People();
console.log(webdesign.getName());    //People's name is steven
console.log(carman.getName());    //People's name is steven
 
不好的地方就是:初始化参数不支持传递,还有就是原型的所有属性和方法会被所有的实例共享

  • 混合模式(原型+构造函数)下

 

 

 

 

 

 

 

 

 

 

    function People(name.age.job){
       this.name = name;
       this.age = age;
       this.job = job;
};
People.prototype = {
      constructor:People,
      getName: function(){
           return "People's name is "+this.name;
      }
}

var webdesigner  = new People("steven",23,"webdesigner");
var carman = new People("zyc",24,"carman");
console.log(webdesigner.getName())   //People's name is steven
console.log(carman.getName())   //People's name is zyc
 

不好的地方就是:对象的属性和方法也多是公用的

 

 

 

 

 

 

 

 

 

  • 闭包下的私有变量模式
(function(){
    var name ="";
    People = function(val){
        name = val;
   };
    People.prototype ={
       constructor:People,
       getName:function(){
              return "People's name is "+ name ;
      }
   };
})();


var webdesigner = new People("steven");
console.log(webdesigner.name);           //undefined
console.log(webdesigner.getName());      //People's name is steven

var carman= new People("zyc");
console.log(carman.name);           //undefined
console.log(carman.getName());      //People's name is zyc


 

不好的地方就是:初级程度代码不是很让人理解

 

 

 

 

 

 

 

 

4
1
分享到:
评论

相关推荐

    F4-OOP.zip,面向对象编程

    F4-OOP.zip,面向对象编程

    F4-OOP.zip(面向对象编程)

    F4-OOP.zip(面向对象编程)

    c#笔试题 7套面向对象 oop

    1. 填空: (1)面向对象的语言具有___继承性、封装性、多态性。 (2)能用foreach遍历访问的对象需要实现 IEnumerable接口或声明GetEnumerator 方法的类型 (3)列举ADO.net中的五个主要对象 Command、Connection、...

    ABAP-OOP-Library, 面向对象的编程库.zip

    ABAP-OOP-Library, 面向对象的编程库 ABAP对象定位程序库安装手动创建下面列出的字典类型使用基于源类编辑器和常规编辑器来导入所有类。接口和程序。某些软件包使用邮件类。 这些消息保存在。messageclass 。txt文件...

    OOP-in-C C语言面向对象

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体(如数据和操作数据的方法)封装在独立的对象中,以提高代码的可重用性和可维护性。C语言作为传统的过程式编程语言,...

    S2-------JavaOOP全程解答

    Java面向对象编程(Object-Oriented Programming,简称OOP)是一种强大的编程范式,它将复杂的程序设计问题通过模拟现实世界中的对象来解决。在Java中,OOP主要包含四个核心概念:封装、继承、多态和抽象。下面将...

    面向对象oop.xmind

    面向对象oop.xmind

    c语言实现面向对象OOP

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体抽象为对象,通过对象来表示现实世界中的概念。C语言,虽然本身不直接支持面向对象特性,但可以通过一些技巧模拟实现...

    08-python-oop简介-使用 OOP 对森林火灾建模-对象

    在Python编程语言中,面向对象编程(Object-Oriented Programming,OOP)是一种重要的编程范式,它基于“对象”的概念。在这个模型中,数据和操作数据的方法被封装在一起,形成了一个独立的实体,即对象。这个教程将...

    C OOp-intro.pdf C++ OOP2-ex.cpp 面向对象Part.pdf

    面向对象编程(Object-Oriented Programming,简称OOP)是C++语言中的核心特性,它是一种编程范式,强调程序数据结构与程序控制结构的结合,以提高代码的可重用性和可维护性。在本文件集合中,我们可以通过三个文件...

    PHP_OOP面向对象课堂笔记

    PHP_OOP面向对象课堂笔记,最简洁明白易懂的面向对象笔记,欢迎下载!

    js 面向对象实例

    面向对象编程(Object-Oriented Programming,简称OOP)是JavaScript中的核心概念,它允许开发者通过对象来组织和管理代码,提高代码的可重用性和可维护性。本实例将深入探讨JavaScript的面向对象特性,并结合HTML5...

    面向对象事例oop面向对象事例oop

    根据提供的标题、描述以及部分内容,我们可以总结出与“面向对象编程(OOP)”相关的知识点。虽然提供的部分内容较为杂乱,但可以从中提取出有关PHP面向对象编程的一些实例。 ### 面向对象编程(OOP)简介 面向对象...

    JS弹性导航条---面向对象

    在JavaScript中,面向对象编程(Object-Oriented Programming, OOP)是一种强大的编程范式,能够帮助开发者创建复杂、可复用且易于维护的代码。在"JS弹性导航条---面向对象"这个主题中,我们将探讨如何利用面向对象...

    面向对象OOP

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作数据的方法封装在一起,以实现代码的模块化和可重用性。OOP的核心思想是抽象、封装、继承和多态。下面...

    java -oop.md,面向对象笔记

    面向对象笔记all,包含数据类型,修饰符,关键字,构造器,类,对象,IO,GUI,面向过程等等。。。

    adm-jclass: 一个面向对象编程的js库

    **adm-jclass: 面向对象编程的JS库** `adm-jclass` 是一个专为JavaScript设计的面向对象编程库,它旨在提供类似于Java、C#等强类型语言的类(Class)机制,帮助开发者在JavaScript环境中实现更加结构化和可维护的...

    Java基础语法测试-基础数据类型-注解-数组-inet-反射-oop-Java代码实现

    内容概要:通过带着读者编写Java基础语法测试代码,理解基础数据类型-注解-数组-inet-反射-oop-Java代码实现过程和测试代码 适合人群:初学java语法入门测试代码 能学到什么:①注解、数组、数据类型、inet、method...

Global site tag (gtag.js) - Google Analytics