JS 之函数定义 & 创建对象 三种方式

JS函数创建三种方式 JS创建对象三种方式
一、javaScript 函数创建的三种方式
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>The three ways </title>
<script type="text/javascript">
/*


方式一、function定义函数格式如下:
    function 函数名( 参数列表 ) {
    函数体
    }
    函数的调用:函数名();
*/
window.onload=function(){
    alert("页面加载完成  调用不同方式定义的方法!!!");
    function voidFun(){
        alert("我是方式一定义的无参函数");
    }
    voidFun();//次位置调用voidFun();但调用的是下面的再次定义的voidFun()

//js不支持重载  重载即覆盖
    function voidFun(){
        alert("我是方式一定义的无参函数 与已经定义好的试图重载 但我覆盖了它");
    }


    function singleFun(a){
        alert("我是方式一定义的一个参数函数 传入的值为:" + a);
    }

     singleFun(666);

    function moreFun(a,b){
        alert("我是方式一定义的两个个参数函数传入为:"+a+"   "+b);
    }
    moreFun("世界",2016);
/*
    arguments相对于Java 中接收的可变长参数数组(隐式存在不用定义)
    public void fun( Object ... params ){} params是一个接收参数的数组

    在function内可用arguments[i]来获取传入的可变参数
    arguments在函数体内可以直接使用,不需要我们去定义。
    它可以接收所有的函数参数值,arguments的值跟数组一样
    在JavaScript中函数在调用的时候,传递的参数会从左到右,依次对函数的参数进行赋值
    没有 被赋到值的参数默认值为undefined
 */
    function sum(){
        //定义一个变量保存相加的和
        var result = 0;
        // 遍历数组arguments
        for (var i = 0; i < arguments.length; i++ ) {
            // 获取每一个变量相加
            var p = arguments[i];

            alert(typeof(p)+" 值   "+p);

            if ( typeof(p) == "number" ) {
                result += p;
            }
        }
        return result;
    }
    var result = sum(12,88,"100",50);
    alert("和为: "+result);



//方式二:var 函数名 = new Function(“参数列表”,”函数体”);
//例如:
var sum = new Function("num1,num2","return num1+num2");
    // 函数调用
    var result1 = sum(120,130,66);
    alert(result1);



//方式三种定义方式如下:
// var 函数名 = function(参数列表)  { 函数体 }
    var funname = function(a,b){

        alert(a);   // abc
        alert(b);   // true
    }
    // 函数调用
    funname("abc",true);
}
</script>
</head>
<body>
    <h4>本html是javascript的三种函数定义 在&lt;head&gt;标签中使用</h4>
</body>
</html>
二、javaScript 创建对象的三种方式
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>new Object of js</title>
<script type="text/javascript">
/*
方式一、Object形式的自定义对象
    var 对象名 = new Object();  //new一个空的对象
    对象名.属性名 = 值;            // 给对象实例添加一个属性
    对象名.函数名 = function(){}  //给对象实例添加一个方法
    js对象的属性访问:
    对象.属性名
    */
    var Student1=new Object();
    Student1.name="方式一 爱尔得华";
    Student1.age=23;
    //创建对象方法 如果是toString 则调用对象相对于调用此方法
    Student1.toString1=function(){
        alert("方式一 hello my name is toString1()");
    }

    Student1.toString=function(){
    var result="方式一  在toString方法内输出信息:年龄:" + this.age + ",姓名:" + this.name;
    alert(result);

    return result="方式一 谁调用toString方法就返回给谁输出这句话 重写方法内容";
    }
    alert(Student1);
    Student1.toString1();
/*


   方式二、{}花括号形式的自定义对象
    花括号中,多组属性,我们必须使用,逗号进行分隔。
    var 对象名 = {
    属性名: 值, // 给对象添加属性
    属性名(函数名): function(){}  // 给对象添加方法
    } 

对象的访问:
对象.属性名
*/
        var Student2={
        name: "方式二 爱尔得华2",
        age: 29,
    toString1:function(){
        alert("方式二 my name is Student2 toString1()");

    },
    toString:function(){
        alert("方式二  my name is Student2 toString()");
        return "方式二  我是toString方法返回来的 如果没有我 调用者得到的就是undefine";
    }
};
    alert( Student2.name );
    alert(Student2);

/*


方式三、function形式的自定义对象(在js中函数即是对象)
    function 对象名(){
    this.属性名 = 值; // 给对象添加属性
    this.函数名 = function(){}  //给对象添加方法
    }

    使用
    var 变量名 = new 对象名() // 创建一个对象的实例 
    变量名.属性名
 */

 function Student3(){
        this.name="方式三 爱尔得华3";
        this.age=30;
        this.toString=function(){
            alert("方式三 我是Strudent3的toString()")
            return "方式三  我是toString方法返回来的 如果没有我 调用者得到的就是undefine";
        }
        this.toString1=function(){
            alert("方式三  我是Strudent3的toString2()");
        }
    }
    var stu=new Student3();
     alert(stu);
     stu.toString1();
</script>
</head>
<body>
</body>
</html>
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值