zoukankan      html  css  js  c++  java
  • JavaSript面向对象

    1 函数对象的属性

    一个对象的属性可以分为静态属性和实例属性两种:

    实例属性:实例对象上定义的属性(属性是定义在实例对象的内存中).

    静态属性:函数本身定义的属性(属性是定义在函数对象的内存中).

    示例代码:

    function Student(){

    this.age=18;//给实例添加了一个属性,这个属性就是实例属性.

    }

    var s1 = new Student();

    s1.name="";//直接给实例添加的属性,也是实例属性

    Student.height=;

    实例:通过构造函数创建出来的对象

    对于函数来说,所有函数其实都是Function构造函数的实例,包括Function函数本身,所以我决定静态属性和实例属性这两个概念是相对来说的.

    2 函数对象定义的默认属性

    示例代码:

    function f(a,s,d,f){

    console.log(f.caller);//f函数本身

    }

    console.log(f.name);//f函数名

    console.log(f.length);//4

    function f2(){

    f();

    console.log(f2.caller);//null

    }

    f2();

    fn.name:函数的名称

    fn.length:函数形参的个数

    fn.caller:表示函数是由哪个函数调用的,如果不是在函数内部调用则输出null.

    arguments:是函数内部默认的局部变量,它是主要用来存储传入函数的实参,是一个伪数组.

    伪数组:不是Array构造函数创建出来的一个对象,但是它拥有一些属性,可以使用for循环进行遍历

    3 函数对象默认参数arguments

    示例代码:

    function f1(){

    console.log(arguments);

    for (var i = 0; i < arguments.length; i++) {

    var obj = arguments[i];

    console.log(obj);

    }

    console.log(arguments.length);

    console.log(arguments.callee);//函数本身

    }

    f1(1,2,3,4,5,6)

    arguments对象的属性

    arguments.callee:指向的就是当前函数本身

    arguments.length:函数调用时传入的实参个数

    arguments是默认的参数可以直接在函数内部调用,且只能被本身函数调用.

    4 递归

    递归的概念:函数的自调用.

    递归案例:

    1. 斐波那契数列:第n项=第(n-2)项+第(n-1)项

    示例代码:

    function fib(n){

    if(n<=0) return;

    if(n===1 || n===2) return 1;

    return fib(n-2)+fib(n-1);

    }

    2. 阶乘:n的阶乘=(n-1)的阶乘*n

    示例代码:

    n!=1*2*...*n

    function factorial(n){

    if(n<0) return;

    if(n===0||n===1) return 1;

    return factorial(n-1)*n;

    }

    3. n的m次方

    原理:n的m次方=n的m-1次方*n

    示例代码:

    function mu(n,m){

    var temp=1;

    if(m<0)return;

    if(m===0)return 1;

    for (var i = 0; i < m; i++) {

    temp*=n;

    }

    return temp;

    } 

    4. 判断某个DOM元素是否在指定的DOM元素下面

    原理:通过查找子元素的父元素和指定DOM元素判断是否为同一个

    示例代码:

    function find(child,parent){

    if(child.parentNode==null) return false;

    if(child.parentNode===parent) return true;

    return find(child.parentNode,parent);

    }

  • 相关阅读:
    python(4):Python应用场景
    python(3):python的优缺点
    MySQL(17):用户登录实例
    MySQL(16):参数化、封装
    MySQL(15):与python交互的增删改查
    MySQL(14):与python交互的类型
    MySQL(13):索引
    c++ --程序编译
    c++ -- 顺序容器操作
    c++ --string操作
  • 原文地址:https://www.cnblogs.com/chendu/p/5914156.html
Copyright © 2011-2022 走看看