8.30——9.4日随笔之一(面向对象)

  在前面随笔中我梳理了一下BFC的知识,接下来我来理一理JS中面向对象概念,在JS中面向对象的说法其实只是一种比喻,在JS中并无类,而是一种和类性质差不多的原型函数;先举个例子:猪和牛都是属于动物这个大的类别里面的,具有一些相同的属性,比如四肢行走,睡觉,以及其它一些共同属性的;但是猪和牛有着各自不同的属性,例如牛可以挤奶,可以耕地;猪可以用来吃,用来吃,以及用来吃等等等。而原型函数的作用就是这样,先定义一个原型函数Animal来,光写没用,我来敲一下:

  首先定义一个Animal原型函数:    

    function  Animal (eat,drink,sleep){                           <----------- 定义原型函数首字母要记得大写

      this.eat =eat;this.drink =drink;this.sleep=function(){alert("八个小时")}

    }

  再定义一个牛的原型函数:

    Cow.prototype=new Animal();            <------这是真实继承法,必须写

    function Cow(name,eat,drink){

      this.name=name;this.use=function(){alert("耕地")};this.constructor(eat,drink,sleep);<-------这是相当于在往Animal里面传参

    }

  再定义一个猪的原型函数:

    pig.prototype = new .Animal();

    function Pig(name,eat,drink){

      this.name=name;this.use=function(){alert("食用")};this.constructor(eat,drink,sleep);

    }

  var cow=new Cow("牛","草","水");  <----------------创建一头牛
  alert(cow.name+"=="+cow.eat+"=="+cow.drink);<-----可以同时调用Animal和Cow的属性

  cow.sleep();
  cow.use();

  var pig =new Pig("猪","猪饲料","水");<----------------创建一头猪

  alert(pig.name+"=="+pig.eat+"=="+pig.drink);<-----可以同时调用Animal和Pig的属性

  pig.sleep();

  pig.use();

  console.log(Cow instanceof Animal);//判断Animal是否为Cow的原型,返回true为是,false为否;

  从上面的例子可以看出,原型函数可以很好的让一些JS程序的编写变得简单,结构清晰明了。

  

时间: 2024-10-25 07:10:32

8.30——9.4日随笔之一(面向对象)的相关文章

10月18日随笔

1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 #include<cstdio> 6 #include<queue> 7 using namespace std; 8 typedef long long LL; 9 inline int read() 10 { 11 int x=0,f=1;char c=getchar

JavaScript 随笔2 面向对象 原型链 继承

第六章 面向对象的程序设计 1.创建对象的几种方式 A)工厂模式 function CreatObj(name,sex,age){ this.name=name; this.sex=sex; this.age=age; } 缺点:虽然可以批量创建对象,却不能知道对象的类型 只知道他是Object类型: B)构造函数 function Person(name,sex){ this.name=name; this.sex=sex; this.sayName=function(){ alert(thi

肆月贰日随笔

昨晚我和技术部的两个成员一起进行我们官网首页的改版,其中一个人是负责安卓端开发的,并没有接触过前端开发.但是整个改版过程中,都是他在实际操作,他自己捯饬捯饬,竟然也弄出了一个初稿.在这以前,我是以为我比别人多掌握了一门技术,应该有些优势,现在看来我之前学的知识是太基础了. 这件事让我反思自己的问题,我想是前期在学习的过程中,总是看基础知识,而没有一个整体的学习计划.这实际上是一个很大的问题,而且在学习新技术的过程中,不应该抱着讲解基础知识的书啃,还是应该找一些源码看看或者自己动手实践,在这个过程

10月24日上午PHP面向对象

定义数组 $attr = array(); $attr[0] = 1; 索引数组 $attr = array(1,2,3,4); 关联数组 $attr = array("code"=>"p001","name"=>"张三"); 二维数组 $attr = array( array(), array() ); 数组遍历 for循环遍历 for($i=0;$i<count($attr);$i++) count($a

Web-9月13日随笔

通配符(*)选择器的利弊: 利:方便,省事 弊:会加大浏览器的负荷 (按需求进行选择) list-style属性值:circle/disc/square/none(空心圆/实心圆/正方形/无) ul跟p标签天生自带内外边距. -.p标签中内容分别是汉字和英文是为什么会出现两种不同的结果. 范例: <p>博客园首页(即网站首页)只能发布原创的.高质量的.能让读者从中学到东西的内容.</p> <p>sdadasdasdasdasfasjfakfnjdkgfukahffuw&

3月20日随笔

1.上周任务 1000行程序完成,有关数组的训练 由于是照着一本项目书敲得,并没有什么个人体会,所以并未上传至github,倒是自己对数组的概念有了更深层次的体会. 下面是我对上次课老师对我布置项目的总结和展望!以及分项列表!要求逐项递增! 1.有关项目的设计(逐项递增) 1.词频统计. 2.+输入,输出(即输入一本书,输出单词) 3.+输入文件类型,不同类型均可输入. 4.+库,可以储存多本书籍. 5.+下载链接,可以输出书或者单词. 6.+搜索框,上传,可搜索图书,库中没有,则上传. 7.+

11月18日随笔

今天在云和学院复习了以前的知识,又学习了ArrayList和HashTable ArrayList实例: ArrayList arr = new ArrayList(); int i = 123; string str = "宋连城"; float f = 1.23f; decimal d = 2.13m; double dou = 22.16; arr.Add(i); arr.Add(str); arr.Add(f); arr.Add(d); arr.Add(dou); arr.Re

2014年8月23日 随笔

来北京快9个月了,现在到了工作的瓶颈,有些小感触记录下来. 1.  技术很重要,但不是最重要的. 2. 人的沟通表达能力, 为人处世要比技术重要百倍. 3. 学习是个过程,这个过程应该是先“学”,然后去“习”.当你了解了这个过程后,要通过大量的练习去巩固它. 4. 合理规划自己的工作,重要的事情先去做. 5. 工作和生活要分开. 不要把工作的情绪带入到生活中. 6. 做事情明确目的.

11月19日随笔

今天在云和学院学习了File类 基本操作:判存.复制.移动.删除 基本方法: –File.Exist(); –File.Copy(); –File.Move(); File.Delete() File.Copy(“source”, “targetFileName”, true);//文件拷贝,true表示当文件存在时“覆盖”,如果不加true,则文件存在报异常. File.Exists();//判断文件是否存在 File.Move(“source”, “target”);//移动(剪切) Fil