JS基础知识二

<!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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值