zoukankan      html  css  js  c++  java
  • JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明

    JavaScript中声明函数的方式:(无需声明返回值类型
    function add(i1, i2) {
                return i1 + i2;//如果不写return返回的是undefined
            }
    int add(int i1,int i2)//C#写法
    不需要声明返回值类型、参数类型。函数定义以function开头。
            var r = add(1, 2);
            alert(r);
            r = add("你好", "tom");
            alert(r);
    JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
    易错:自定义函数名不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。//不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)


    函数声明时注意{ }的位置
    推荐写法:
    function fun(){
    }
    一般在js中编写大括号都是直接跟在后面而不要另起一行,比如:
    return {Name:’yzk’,Age:18};而不要写成:
    return
    {
    Name:’yzk’,
    Age:18
    }

    原因是js会在语句末尾自动增加”分号”,如果将大括号另起一行,则return语句后自动增加“分号”后,返回值就变成了undefined了。


    arguments对象
    JavaScript中没有方法重载。
    动态为方法传递参数,类似于.net中的params关键字作用
    <script type="text/javascript">
            function myFunc() {
                for (var i = 0; i < arguments.length; i++) {
                    document.write(arguments[i]);
                    document.write('<br/>');
                }
            }
            myFunc('张三', 18, '李四', 19);
        </script>


    匿名函数1(函数直接量function literal)
    第一种:
    var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量
    alert(f1(1,3));
    匿名函数没法调用,只能赋值给一个变量,由于是赋值语句,后面要加分号
    应用:
    ///document.getElementById(‘btn’).onclick=function(){}


    第二种(*):
    (function(p1,p2){alert(p1+p2);})(20,30);


    第三种:(*)
    var m1=new Function(“p1”,”p2”,”p3”,”return p1+p2+p3”);
    alert(m1(1,2,3));性能低eval
    匿名函数知道即可,以后用到的时候就会发现它的好了。jQuery中大量用到了匿名函数。


    匿名函数2
    类似于C#中的匿名函数。
    这种匿名函数的用法在jQuery中的非常多。
    alert(function(i1, i2) { return i1 + i2; }(10,10));//直接声明一个匿名函数,立即使用。用匿名函数省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突。通过例子发现一旦命名冲突以最后声明的为准。尽量减少文件的字节数。
    匿名函数的使用,在后续的学习中会有使用。


    JS面向对象基础1(*)
    1.函数就是对象,对象就是函数。【当函数作为对象时,每个单词首字母都大写】
    方法直接调用为函数,用new调用为对象。


    2.由于js是动态语言所以创建对象的最直接的方式:

    var obj=new Object();
    obj.name=‘aa’;
    obj.age=18;//要什么加什么。但是都是object类型。无法区分不同类型。


    3.Example(写一个Person对象):
    function Person()  {   }   //ok,就这么简单。


    4.如何使用Perosn对象?

    var p=new Person();// “var p”  不是   “Person p”。
    p.Name=‘张三’;//动态语言,所以可以直接写。
    p.Age=30;
    p.SayHello=function() { alert(‘Hi~’); }
    alert(p.Name);
    alert(p[‘Age’]);//另外一种动态访问属性的方式。


    JS面向对象基础2(*)
    JavaScript同样支持this关键字
    构建一个带参数的Person对象。通过this关键字为对象的属性赋值。
    function Person(name, age) {
                this.Name = name;
                this.Age = age;
                this.ShowInfo = function() {
                alert('大家好,我叫' + this.Name + ',今年' + this.Age + '岁了。');     }}
    var zjl = new Person('周杰伦', 20);
    zjl.ShowInfo();
    function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。【var p1 = Person(“周杰伦", 20);//不要丢了new,否则就变成调用函数了,p1为undefined。】new 相当于创建了函数的一个实例。

  • 相关阅读:
    [Javascript] Use a custom sort function on an Array in Javascript
    [Unit Testing] Fundamentals of Testing in Javascript
    [WASM] Create a New Rust/Webpack Project using the rust-webpack Template
    [Adobe Analytics] Segments types
    win7系统远程连接其它计算机,并且向远程机传输文件
    移动应用数据统计分析平台汇总
    设计模式(策略模式)
    程序员与卓别林
    我的Android进阶之旅------>HTTP 返回状态值详解
    OSX: 真的吗?Mac OS X重大漏洞 改时钟获系统最高权限
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193665.html
Copyright © 2011-2022 走看看