zoukankan      html  css  js  c++  java
  • jsday04 函数补充 对象

    一,arguments的使用
    JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组,因此也可以进行遍历。
    二,函数的命名
    规则
     1.由字母、数字、下划线、$符号组成,不能以数字开头
    2.不能是关键字和保留字,例如:for,while,this, name
    3.区分大小写(建议小写,大写识别为对象的构造函数)
    规范:
    1.函数名必须有意义
    2.遵守驼峰命名法
    3.建议不要用$作为变量名
    匿名函数
    匿名函数:没有名字的函数
    如何使用:
    将匿名函数赋值给一个变量,这样就可以通过变量进行调用
    自调用函数
    匿名函数不能通过直接调用来执行,因此可以通过匿名函数的自调用的方式来执行
    })();
    函数作为参数
    因为函数也是一种类型,可以把函数作为两一个函数的参数,在两一个函数中调用
    函数做为返回值
    因为函数是一种类型,所以可以把函数可以作为返回值从函数内部返回,这种用法在后面很常见
    三. 预解析
    JavaScript引擎在对JavaScript代码进行解释执行之前,会对JavaScript代码进行预解析,在预解析阶段,会将以关键字var和function开头的语句块提前进行处理。
    当变量和函数的声明处在作用域比较靠后的位置的时候,变量和函数的声明会被提升到作用域的开头。
    但函数表达式并不会被提升
    定义提升,变量的赋值不提升
    四,作用域
    函数可以制造作用域结构, 那么只要是代码,就至少有一个作用域, 即全局作用域。
    凡是代码中有函数,那么这个函数就构成另一个作用域。如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。
    将这样的所有的作用域列出来,可以有一个结构: 函数内指向函数外的链式结构。就称作作用域链。
    补充
    声明变量使用`var`, 如果不使用`var`声明的变量就是全局变量( 禁用 )
    如果里层作用域的变量未定义,会逐层向上寻找,直至被定义为止
    同名的函数,后面的会覆盖前面的
    
    
    
    4. 对象
    对象字面量
    var o = {
      name: "zs",
      age: 18,
      sex: true,
      sayHi: function () { console.log(this.name);
      }
    };
    new Object()创建对象
    var person = new Object();
      person.name = 'lisi';
      person.age = 35;
      person.job = 'actor';
      person.sayHi = function(){
      console.log('Hello,everyBody');
    }
    工厂函数创建对象
    function createPerson(name, age, job) {
      var person = new Object();
      person.name = name;
      person.age = age;
      person.job = job;
      person.sayHi = function(){
        console.log('Hello,everyBody');
      }
      return person;
    }
    var p1 = createPerson('张三', 22, 'actor');
    自定义构造函数
    function Person(name,age,job){
      this.name = name;
      this.age = age;
      this.job = job;
      this.sayHi = function(){
        console.log('Hello,everyBody');
      }
    }
    var p1 = new Person('张三', 22, 'actor');
    new关键字
    构造函数,是一种特殊的函数。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
    new在执行时会做四件事情:
    new会在内存中创建一个新的空对象
    new会让this指向这个新的对象
    执行构造函数,目的:给这个新对象加属性和方法
    new会返回这个新对象
    this详解
    JS中this的指向问题,有时会让人难以捉摸,随着学习的深入,我们可以逐渐了解。
    函数内部的this几个特点:
    1. 函数在定义的时候this是不确定的,只有在调用的时候才可以确定
    2. 一般函数直接执行,内部this指向全局window
    3. 函数作为一个对象的方法,被该对象所调用,那么this指向的是该对象
    4. 构造函数中的this其实是一个隐式对象,类似一个初始化的模型,所有方法和属性都挂载到了这个隐式对象身上,后续通过new关键字来调用,从而实现实例化
    遍历对象的属性
    通过for..in语法可以遍历一个对象
    删除对象的属性
    delete obj.name;
    function fun() {
      this.name = 'mm';
    }
    var obj = new fun();
    console.log(obj.name); // mm
    delete obj.name;
    console.log(obj.name); // undefined
  • 相关阅读:
    SDK Tools Dependencies
    hibernate开发中遇到多对多的问题,可以转换为两个一对多
    利用PC 转发 模拟手机端之间socket通信
    假如你被当成精神病关进了精神病院
    通过JSONP实现完美跨域
    查看linux系统版本命令
    Eclipse+python开发环境配置
    linux chkconfig命令参数及用法详解
    Fedora 17 安装后要做的几件事:MP3,桌面定制,root登录等
    Fedora 17 配置 Nginx + Mysql + php
  • 原文地址:https://www.cnblogs.com/adylz111/p/13433590.html
Copyright © 2011-2022 走看看