<!DOCTYPE html>
<html>
<head>
<title>javascript01.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script type="text/javascript">
//函数的定义第一种
function fn1(){
console.log('fn1');
return '101'; //返回值直接这样写
}
//第二种:意思是在堆中有个的方法,然后栈中的变量aa指向了这个方法,所以aa就为一个function.只要一个变量指向了一个function那么这个变量就是一个function
var aa = function(){
console.log('aa');
return 100; //方法的返回值这样写
}
var yy = function(){
console.logg('yy'); //js为解释型的语言,执行一句解释一句,虽然这里log写错了但是这个方法没有被调用即这句话没有执行,所以就不会报错,如果调用了这个方法才会报错。但是java编译期间就会报错
}
function bb(arg){
return arg+100;
}
function cc(fun,args){
return fun(args);
}
function dd(fun){
return fun;
}
console.log(cc(bb,10)); //110
console.log(dd(fn1())); //fn1 101
//此时aa就是一个function函数
aa();
console.log(aa());
//fn1指向堆中的函数,fn1是一个方法,现在bb=fn1表示bb变量也指向堆中fn1指向的同一个函数,所以bb也变为一个方法
var bb = fn1;
fn1();
bb();
console.log(fn1);
console.log(bb); //bb指向了整个函数
console.log(typeof bb);
//这个是将函数fn1所执行的返回值传给cc变量,所以cc为101
var cc = fn1();
console.log(cc);
console.log(typeof cc);
function Person(name,age){ //这就相当于java中的类,使用this定义了3个属性,不用this不是类的变量
//定义了Person的属性为name
this.name = name;
//定义了Person的属性为age
this.age = age;
//定义了Person的属性为address
this.address = '成都高新';
//如果没有用this来申明,那么这个变量就仅仅只是一个局部变量,不是类的属性 所以下面p1.x是访问不到局部变量的,输出未定义undefined
var x = 10;
//所以想要定义函数可以这样,让say指向了一个匿名函数
this.say = function(){
console.log(this.name+','+this.age);
}
}
//创建对象,为p1的对象
var p1 = new Person('evy',12);
//获取对象的属性值可以通过p1.name或者通过对象['属性字符串']如p1['name']
console.log(p1.name+','+p1.address+','+p1.age+','+p1.x);
console.log(p1 instanceof Person);
p1.say();
var p2 = new Person('hurk',15);
console.log(p2['age']+','+p2['address']);
//注意
var a = 'age'; //为属性的字符串
console.log(p2[a]); //只能这样加[]去获取属性的值
console.log(p2.a); //如果这样的话会去找p2中的属性为a的值,但是Person类中没有a这个属性
//在js中对于对象而言,可以通过for in来遍历对象的属性,如下aa是随便取得名字
for ( var aa in p2) {
//可以获取对象中显示声明的属性
console.log(aa); //输出为name,age,address,say
//既然知道了属性名,就可以取到值
console.log(p2[aa]);
}
</script>
</head>
<body>
This is my HTML page. <br>aaaaaa
</body>
</html>