美文网首页
JavaScript 对象篇

JavaScript 对象篇

作者: 花差花差小宝 | 来源:发表于2018-11-18 21:51 被阅读0次

    javascript对象的继承和Object对象

    对象的一个类可以从现有的类中派生,并且拥有现有的类的方法或是属性,这和过程叫做继承。被继承的类叫做父类或是基类,继承的类叫做子类。

      (一个对象拥有另一个对象的属性和方法)

    优点:

      提高代码的重用性

      提高代码的可维护性

      提高代码的逻辑性

    一、Object对象

        var obj=new Object()

        属性:

        1.constructor (Object 的属性)

          对创建对象的函数的引用(指针)。

          var obj=new Object();

          alert(typeof obj);

          alert(obj.constructor);//function

        2.//Prototype 原型 (函数的默认属性,函数属性就是对象的原型)

        var obj=new Object();

        function fun(){}

        alert(obj.prototype);//undefined

        alert(fun.prototype);//object

    **********************************************

          prototype对函数对象的对象原型的引用。是函数对象的默认属性

    **********************************************

              A.对象的共享属性存放到代码段当中。

              B.可以实现继承。

        方法:

          A。hasOwnProperty(property)

            判断对象是否有某个特定的属性

            var obj=new Fun();

            function Fun(){

            this.name='er'

        }

            obj.hasOwnProperty('name');

          B.IsPrototypeOf(object)

          判断该对象是否为另一个对象的原型。(用来检测对象的类型)

    var arr=new Array();

    alert(Array.prototype.isPrototypeOf(arr));

    var obj=new Fun();

            function Fun(){

            this.name='er'

        }

    alert(Fun.prototype.isPrototypeOf(obj));

          c.运算符

            instanceof

            var obj=new Fun();

            function Fun(){

            this.name='er'

        }

    alert(obj instanceof Fun);

    二、继承

      1.原型继承

      function Person(){

      this.name='saner';

      this.fun=function(){alert(this.name)}

      }

      function Student(){}

      Student.prototype=new Person();

      alert(Student.fun());

    //stu 是不是 Person的子类

      alert(Person.prototype.isPrototypeOf(stu));

    // stu 的对象类型是否相同;

    alert(stu instanceof Person);

      2.对象冒充的形式

        A.call

        obj1.fun.call(obj2,[参数1......])

    obj1冒充obj2

    function Person(){

      this.names='saner';

      this.fun=function(){alert(this.names)}

      }

      function Student(){this.names='lisi'}

    var stu=new Student();

    var per=new Person();

    per.fun.call(stu);//stu对象可以寄生per 只能执行per 中的方法

    alert(stu instanceof Person);//对象类型是否一样

    alert(Person.prototype.isPrototypeOf(stu))//stu是否是Person的子类;

    stu.fun();//stu中并没有fun 函数,它只是寄生与Person对象,执行Person 的函数;

    ...........

    -------------------以下是另一种写法---------

    function Person(){

      this.names='saner';

      this.fun=function(){alert(this.names)}

      }

      function Student(){

      this.names='lisi';

      Person.call(this);//执行的完全是Person 的方法;

    }

    alert(stu instanceof Person);

    alert(Person.prototype.isPrototypeOf(stu))

    stu.fun();//可以调到fun方法 但是与Person并没有继承关系;

    stu.names;//也可以执行Person中的属性;

        B.apply

          obj1.fun.call(obj2,[参数1,参数2....])

        让对象1的方法冒充成对象2的方法。

    相关文章

      网友评论

          本文标题:JavaScript 对象篇

          本文链接:https://www.haomeiwen.com/subject/tolnfqtx.html