zoukankan      html  css  js  c++  java
  • 通俗易懂的理解js的面向对象

    1.在js的j世界里一般会把构造函数看成一个面向对象,其实面向对象从表面意思理解是面向全局的一个对象,构造函数就是那个面向全局的对象(函数本身就是一个对象)

    2.什么样的是构造函数,一般首字母大写的可以看成是构造函数(如果不是想定义构造函数谁没事把首字母大写啊~~)

    通俗的理解:

    你可以把构造函数他当成一个陶瓷工坊(Shop),这个工坊面向所有人的(面向对象),哪一天你突然来兴趣了想做一个陶瓷杯子,但是这家店有个规矩你想用我可以,必须成为我们的会员,办一个新会员(new Shop()),每个想进来的人都要(new Shop())一下,成为新会员后,你就可以做自己喜欢的杯子了,这个杯子的形状,颜色你都可以按自己的喜好来,当然每个人的喜好不同所以这些属性都不是固定的。(所以这就不难理解构造函数里面的this总是指向当前构造它的实例对象,因为当然是谁制造了它它就跟谁了)

    我们都知道一个东西不仅有属性还会有功能,比如说杯子是用来喝水的

    function Shop(color,shap){

      this.color=color;

      this.shap=shap;

      this.drink=function(){

        console.log(‘我能够喝水’);

      }

    }

    var my=new Shop('red',‘圆’);//此时构造函数里面的this是指向my

    var mother=new Shop('blue','长方形');//此时构造函数里面的this是指向mother

    此时有一个疑问my.drink==mother.drink吗?

    答案当然是否定的了,因为他们都不是一个妈妈生的即使都会吃喝拉撒那也不是同一个人吧,同理这里也是一样;

    但是大家有没有发现

    var arr1=new Array(1,2,3);

    var arr2=new Array(4,5,6);

    arr1.push==arr2.push是对的;

    这就牵扯到了原型:

    原型prototype是每个构造函数都有的属性对象(因为它是这个函数下面的属性,同时它本身又是对象类型)

    只要是对象下面就可以有自己的属性和方法,原型上的属性和方法可以看成共用的,公有的

    同样用上面的列子通俗点讲原型上面的属性和方法:

    原型可以看成店里面的杯子,不属于我们任何人但是我们都可以用,是大家的公有的,能用但带不走,这就能解释arr1.push==arr2.push,因为它是定义在原型下面的Array.prototype.push

    我们一般会把一些大家都有的功能放在原型上,这样也就不需要每次创建实例对象时,都要把这个方法挂载在对象下面,比较浪费性能,所有人都用原型下面方法的就行了

    原型下面的属性也是同样的道理。 但是一些属性没法公有还是要对象本身自带的,比如人的身份证号等等一些独一无二的.

    对象有私有的就用私有的,如果没有私有的就用公有的(私有的优先级大于公有的),就像你有私家车了,还会做公交车一样的道理吗?

  • 相关阅读:
    python 希尔排序
    python 选择排序
    python 插入排序
    怎么根据返回数量,来渲染点赞星星的个数变高量?
    avalon $computed不起作用?
    移动端点击事件兼容问题,在pc端可以点,在手机上不可以点
    移动端弹出遮罩层禁止页面滚动,遮罩里面的框允许滚动如何实现。
    移动端,如何禁止弹窗下面内容滚动/页面滚动
    avalon数据已更新,视图未更新的bug修复
    Python 导入分部分项前的 数据处理
  • 原文地址:https://www.cnblogs.com/liyue666/p/9812830.html
Copyright © 2011-2022 走看看