微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【阅读】《head first html5》第四章——javascript函数和对象

  • 要创建一个函数,要使用function关键字
  • 函数可以是命名函数,也可以是匿名的
  • 函数的命名规则与变量命名规则相同
  • 函数体放在大括号之间,包含完成函数工作的具体语句
  • 函数可以用return语句返回一个
  • 调用一个函数,需要使用函数名,并传入它需要的所有实参
  • javascript使用传值的方式传递函数
  • 传递一个对象作为一个实参时,比如dog,形参会得到这个对象引用的一个副本(
    function student(name,age,height) {
    	this.name = name;
    	this.age = age;
    	this.height = height;
    }
    window.onload = function(){
    	var man = new student("小明",21,170);
    	alert(man.name);
    	test(man);
    	alert(man.name);
    	
    };
    function test(student) {
    	student.name = "小红";
    	student.age = 18;
    }

    以上先输出小明,之后输出小红;这与java是类似的,java要实现上面的例子可以这样
    public class Text {
    	public static void main(String[] args) {
    		Student student = new Student("小明",18,170);
    		System.out.println(student.name);
    		test(student);
    		System.out.println(student.name);
    	}
    	static class Student {
    		String name;
    		int age;
    		double height;
    		public Student(String name,int age,double height) {
    			this.name = name;
    			this.age = age;
    			this.height = height;
    		}
    	}
    	public static void test(Student student) {
    		student.name = "小红";
    	}
    }

  • 函数中定义的变量,包括形参,都称为局部变量
  • 函数外定义的变量称为全局变量
  • 局部变量在定义该变量的函数之外不可见(就是不能使用到那个变量)这称为变量的作用域
  • 如果声明一个局部变量时与一个全局变量同名,这个局部变量就会遮蔽全局变量(优先使用局部变量)
  • 页面链接到javascript文件时,所有全局变量都定义在同一个全局空间中。
  • 如果赋一个新变量而没有使用var关键字,这个变量就是全局的,即使在一个函数中首次赋值(如果你的变量是声明在函数中的那它的作用域还是在那个函数中,个人不是很理解这句话)
  • 函数也是值,可以赋给变量、传递给其他函数、存储在数组中,还可以付给对象属性
  • 对象是属性的集合
  • 可以使用点记法或中括号记法访问对象的属性
  • 如果使用[]记法,要把属性名作为一个串用引号引起来,例如myObject["name"]。
  • 可以改变一个属性的值、删除属性(delete people.name)或者想对象增加属性
  • 可以使用一个for-in循环枚举对象的的属性
  • 赋给一个对象属性函数称为方法
  • 方法可以使用一个特殊的关键字this来引用调用这个方法的对象(this就是它本身)
  • 构造函数是创建对象的函数
  • 构造函数的任务是创建一个新对象,并初始化这个对象的属性
  • 调用一个构造函数创建对象,需要使用new关键字。例如new Dog();
  • windows是全局对象(也就是说有的地方你不加windows实际上它自己就帮你加了,比如windows.alert("")==alert(""));
  • document是windows的一个属性
  • document.getElementById方法会返回一个元素对象。

注意:

  • 在写方法的形参时,不需要在参数前加var,就算那个是参数是Array也不需要
  • 如果有同名的函数,将使用较后面声明的那个,哪怕是参数不同(这点与java不同)
  • 创建对象的时候要注意不同属性之间不是用分号而是用逗号间隔的
    var man = {
    	name: "小刚",age: 19
    }

  • 使用for..in语句遍历的时候要这样
    var students = new Array("小明","小强","小红","小白");
    for(index in students) {
    	alert(students[index]);
    }
    这里的index是0,1,2.3,不是像java那样直接把姓名取出来得
  • 删除对象的属性时,哪怕这个对象根本没有这个属性,他也可以返回一个true
    var a = new people("小明","男",19);
    if(delete a.height) {
    	alert("OK");
    } else {
    	alert("No OK");
    }
    这样输出的是OK,就算people中没有height这个属性

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。