zoukankan      html  css  js  c++  java
  • 学习面向对象第三天

         为了加深记忆,又把笔记整理了一下,今天主要学习了原型链的相关知识以及函数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的实参个数

        

          

        

  • 相关阅读:
    常见面试题
    3*0.1 == 0.3 将会返回什么?true 还是 false?
    poj_2186 强连通分支
    强连通分量、割点、桥
    最小生成树
    poj_2349 Kruskal 最小生成树
    poj_1258 prim最小生成树
    最短路径
    poj_1125 Floyd最短路
    poj_1860 SPFA
  • 原文地址:https://www.cnblogs.com/fatimah1214/p/6051223.html
Copyright © 2011-2022 走看看