学习面向对象第三天

     为了加深记忆,又把笔记整理了一下,今天主要学习了原型链的相关知识以及函数Function。

   一、原型链的相关知识

       1.原型链的概念:

         所谓原型链 就是指 从一个对象到Object.prototype之间存在一条体现继承层次关系的链式结构,这个结构被称为对象的原型链。

         本质:链上的每一个对象都是通过__proto__属性连接起来的。

       2.绘制原型链:

        (1)先简写对象的原型链;

        (2)将上述原型链上的所有对象绘制在图形上,并且将和原型链相关的属性添加到对象上;

        (3)给对象的每一个属性确定指向;

        (4)如果图形上的每一个对象的属性都有正确指向,说明绘制完成。

      3 .Object.prototype几个方法简介

        (1)hasOwnProperty

              语法:obj.hasOwnProperty("propName");  注意:属性名必须是字符串

              功能:用来判断指定属性是否为对象自身的,而不是继承过来的;如果是自身的就返回true, 否则返回false。

        (2)isPrototypeOf

              语法:obj1.isPrototypeOf(obj2);

              功能:用来判断obj1 对象 是否为 obj2对象 的原型;如果是,就返回true,否则返回false。

        (3)propertyIsEnumerable

             语法:obj.propertyIsEnumerable(''proName'');

             功能:判断属性是不是可枚举的;必须满足两个条件返回true,否咋返回false。

                   条件一:判断属性是自己的;条件二:判断属性是自己的。

      4.装箱和拆箱

        将基本数据类型 装换为 复合数据类型,这个过程被称为 装箱;

        将复合数据类型 装换为 基本数据类型,这个过程被称为 拆箱。

      5.强调几点注意内容

        (1)默认原型对象才具有constructor属性;

        (2)只有函数具有prototype属性(除了Function.prototype);

        (3)任意的对象都具有__proto__属性。

    二、函数Function

       1.创建函数的几种方式

        (1)声明式

             function f00(){};

        (2)表达式

             var fn=function(){};

        (3)构造函数方式

            var fn=new Function(''arg1'',''arg2'',...,''argn'',''body'');

            注意以下几点:

               arg1", "arg2", "arg3", ..."argN" 为生成函数的形参列表,且为可选的参数列表, "body" 为生成函数的函数体部分;

                如果不给构造函数传参数的话,就会创建一个没有形参列表也没有函数体实现的函数;

                如果只传入一个参数,那么这个参数值会交给"body"形参。

        2.eval与Function

           (1)共同点:都可以将一个字符串当做一段js代码来执行

           (2)不同点:eval 具有作用域安全问题,有可能污染变量,而Function并不会;eval可以肆意在全局上执行一段字符串代码,会造成网站不安全。

       3.函数的相关属性

        (1)caller:返回调用当前函数的函数

        (2)length:记录形参的个数

        (3)name:记录函数的名字

         注意:arguments.length可以获取到执行函数fn的实参个数

    

      

    

posted on 2016-11-10 15:47  fatimah_man  阅读(96)  评论(0编辑  收藏  举报

导航