JavaScript基础函数---李老师的

<!DOCTYPE html>
<html>
<head>
    <title>demo2html</title>
    <meta charset="utf-8"/>
    <style type="text/css">
    
    </style>
</head>
<body>
<script type="text/javascript">
    /*创建函数和字面量函数*/
    /*
        function add(){
            alert("函数创建成功")
        };
        var testfunction=function(){
            alert("这是一个匿名函数");
        };
        add();  //调用函数
        testfunction();//调用字面量函数
    */

/*    
        var testobj=new Object();  //创建对象
        testobj.run=function(){    //给对象创建方法
            alert("这是对象内部的方法");
        };
        testobj.run();   //调用对象的方法
    */

/*创建函数对象*/
    /*
        function ball(){
        }
        ball.name1="testing";  //给函数对象创建属性
        alert(ball.name1);  //访问函数属性
        alert(typeof ball)
    */

/*函数的引用*/
    /*
        function myFunction(message){
            alert(message);
        }
        var ptr=myFunction;   //将函数的引用传递给变量
        ptr("Testing");  //变量调用函数
    */

/*将函数的引用传递给对象*/
    /*
        function sayName(name1){
            alert(name1);
        }
        var obj1=new Object();
        var obj2=new Object();
        var obj3=new Object();
        obj1.sayMyName=sayName;  //将引用传递给对象的变量,形成对象的方法
        obj2.sayMyName=sayName;
        obj3.sayMyName=sayName;
        obj1.sayMyName("张三")  //调用对象的方法
        obj2.sayMyName("李四");
        obj3.sayMyName("王五")
    */

/*
        function add(){
        }
        add.message="chaiyesong"
        var ptr1=add;
        var ptr2=add;
        alert(ptr1.message);
        alert(ptr2.message)
        add.message="123";
        alert(ptr1.message)
        alert(ptr2.message)
    */

/*引用指向另一个变量*/
    /*
        function add(){
            alert("one");
        }
        var ptr=add;
        ptr=function(){  //创建了另一个叫做myFunctionPtr的函数而不是修改它
            alert("ptr")
        }
        add=function(){  //引用指向了另一个函数,修改了函数的引用
            alert("two")
        }
        add()
        ptr()
    */

/*创建函数对象*/
    /*
        function Ball(message){
            alert(message)
        }
        var ball0=new Ball("testing")
        ball0.name1="ball-0"
        alert(ball0.name1)

function Ball(message){
            alert(message)
        }
        var ball0=new Object()
        ball0.constuct=Ball;  //将函数的引用指向了一个对象的构造器
        ball0.constuct("ceshiceshiceshi")  //由这个对象的构造器执行此函数
        ball0.name1="tesing"
        alert(ball0.name1)
        function Test(){

}
        alert(Test.prototype)  //共享属性
    */

/*添加共享属性*/
    /*
        function Fish(naem1,color1){
            this.name1=naem1
            this.color1=color1
        }
        Fish.prototype.LivesIn="water"  //添加共享属性
        Fish.prototype.price=20
        var fish1=new Fish("mackrel","gray")
        var fish2=new Fish("goldfish","orange");
        var fish3=new Fish("salmon", "white");
        for (var i=1; i<=3; i++)
        {
          var fish=eval("fish"+i);   // 我只是取得指向这条鱼的指针
          alert(fish.name1+","+fish.color1+","+fish.LivesIn+","+fish.price);
        }
    */

/*    
        function Employee(name, salary)
            {
              this.name=name;               
              this.salary=salary;
            }
            Employee.prototype.getSalary=function getSalaryFunction()
            {
              return this.salary;
            }

Employee.prototype.addSalary=function addSalaryFunction(addition)
            {
              this.salary=this.salary+addition;
            }
            var boss1=new Employee("Joan", 200000);
            var boss2=new Employee("Kim", 100000);
            var boss3=new Employee("Sam", 150000);
            alert(boss1.getSalary());   // 输出 200000
            alert(boss2.getSalary());   // 输出 100000
            alert(boss3.getSalary());   // 输出 150000
    */

/*匿名函数*/
    /*
        (function(x,y){
                alert(x+y)
        })(2,3)//这个函数自我执行的能力
    */

/*执行并且调用函数*/
    /*
        var f1=function(){
                return "testing"
            }
            alert(f1())
    */

/*将自我执行的结果给变量*/
    /*
        var f2=function(){
                return "ok"
            }()
        alert(f2)
    */

// (
        //     function(){
        //         alert("fa")
        //     }()
        // )
        
    /*
        function box(){
                var user=‘Tt‘
                return function(){
                    return user;
                }
        }
        alert(box()()) //调用内嵌函数
    */

// var b=box()
        // alert(b())

/*通过闭包函数实行自动加*/
    /*
        function box(){
                var age=100
                return function(){  //调用的其实是这个方法,实现了数据在内存中驻留的时间
                    age++
                    return age;
                }
        }
        var b=box()
        alert(b())
        alert(b())
        alert(b())
    */

/*开始版*/
    /*
        function box(){
            var arr=[] //申明一个数组
            for (var i = 0; i <5; i++) {
                arr[i]=function(){  //通过循环只是把函数赋值给了每个元素
                    return i;
                }    
            }
            return arr; //返回一个数组
        }
        var b=box() //把返回的数组赋值给b
        document.writeln("数组的长度为:"+b.length+"<br />")  //返回数组的长度
        for (var i = 0; i < b.length; i++) {
            document.writeln("匿名函数返回的值为:"+b[i]()+"<br />") //执行此函数每个元素的值是5,因为最后一个元素的值为5
        };
    */

/*改进版*/
    /*
        function box1() {
                var arr1 = [];
                for (var i = 0; i < 5; i++) {
                    arr1[i] = (function (num) {       //自我执行,把函数自我执行的结果赋值给了每个元素
                    return num;
                    })(i);          //并且传参
                }
                return arr1;
        }
        var b1 = box1();  //返回时数组
        for (var i = 0; i < b1.length; i++) {
            document.writeln("改进后 输出的结果为:")
            document.writeln(b1[i]+"<br />");        //这里返回的是数组,直接打印即可
        }
    */

//测试版
    /*
        var testarr=[];
            for (var i = 0; i < 5; i++) {
                testarr[i]=function(){
                    return i;
                }
            };
            document.writeln("测试板的长度为:"+testarr.length+"<br >")
            for (var i = 0; i < testarr.length; i++) {
                document.writeln("测试版第"+(i+1)+"次"+testarr[i]+"<br />")
            };
            var aa=function(){
                return 3
            }
            document.writeln("测试版测试的结果"+aa)
    */

/*改进版3*/
    
    /*
        function box3() {
            var arr3= [];
            for (var i = 0; i < 5; i++) {
                arr3[i] = (function (num) {
                    return function () {     
                        return num;       
                    }
                })(i);//自我执行的结果赋值给每个元素,执行完了,将其执行的结果赋值给了每个元素
            }
            return arr3;
        }
        var b3= box3();
        for (var i = 0; i < b3.length; i++) {
            document.writeln(b3[i]()+"<br />");   
        }
    */

/*js函数教程地址://http://www.cnblogs.com/ttcc/p/3763437.html*/
        
        /*闭包中的this指定的对象是window*/
    /*
        var user=‘The Window00‘;
        var obj={
            user:‘The Window001‘,
            getUserFunction:function(){
                return function(){
                    return this.user;
                }
            }
        }
        document.writeln("返回this指定的对象"+obj.getUserFunction()())
    */

// function box(count1){
        //     var i=12;
        //     for (var i = 0; i < count1; i++) {
        //         document.writeln(i);
        //     }
        // }
        // var i=10
        // box(2)

/*闭包执行完毕,立马清除内存数据*/
    /*
        function box(count) {
                (function () {
                    for (var i = 0; i<count; i++){
    
                    }
                })();
                document.writeln(i);   //报错,无法访问
        }
        box(2);
    */

/*通过闭包访问隐私属性*/
    /*
        function Box() {
            var age = 100;           //私有变量
            function run() {          //私有函数
                return ‘运行中...‘;
            }
            this.get = function () {   //对外公共的特权方法
                return age + run();
            };
        }
        var box = new Box();
        alert(box.get());

function Person(value) {
            var user = value;     //这句可以省略
            this.getUser = function () {
                return user;
            };
            this.setUser = function (value) {
                user = value;
            };
        }
    */

/*单例模式*/
    /*
        var box = function () {
                var user = ‘TT‘;                                      //私有变量
                function run() {                                      //私有函数
                           return ‘运行中...‘;  
                }
                return {
                           publicGo : function () {               //对外公共接口的特权方法
                                    return user + run();
                            }
                         };
        }();
        alert(box.publicGo());
    */

/*单例模式*/

/*
        function Desk() {
            //定义了一个函数
        }
        var box = function () {
                 var user = ‘TT‘;                                      //私有变量
                 function run() {                                      //私有函数
                           return ‘运行中...‘;  
                 }
                 var desk = new Desk();   //实例化自定义对象
                 desk.publicGo = function () {
                           return user + run();   //给自定义函数定义方法
                 };
                 return desk;
        }();
        alert(box.publicGo());
    */

</script>
</body>
</html>

时间: 2024-08-03 13:22:14

JavaScript基础函数---李老师的的相关文章

JavaScript基础——函数表达式、闭包

简介 函数表达式是JavaScript中的一个既强大又容易令人困惑的特性.定义函数的方式有两种:一种是函数声明,另一种就是函数表达式.函数声明的语法是这样的: function functionName(arg0 , arg1 , arg2--){ //函数体 } 首先是function关键字,然后是函数的名字,这就是指定函数名的方式.Firefox.Safari.Chrome和Opera都给函数定义了一个非标准的name属性,通过这个属性可以访问到给函数指定的名字.这个属性的值永远等于跟在fu

JavaScript基础函数的声明

1.函数的重要地位 函数(functions)在JavaScript里有着重要的地位,其原因有二: 它们是一种特殊的对象 它们提供作用域 说函数在JavaScript里是特殊的对象,因为: 程序的执行时期可以动态创建函数对象: 函数对象可以赋给变量,通过变量可以再传递给其它变量,还可以被删除: 函数对象可作为其它函数的形参,也可以作为函数的返回值: 函数对象可以有自己的属性和方法(methods). 例如,(实际编程中完全可以这样做)对于JavaScript的函数A来说,它是个对象:它有自己的属

JavaScript基础--函数声明,函数的作用域链

函数声明和函数表达式区别 函数声明是通过 function 函数名(){}来声明一个函数 函数表达式是通过声明一个变量,然后赋值函数. 两者区别是,在程序执行前,会先获取函数声明声明的函数,获取变量的声明,这里变量的声明只是先开辟一个空间,然后给了个名字,之后到该变量名赋值的时候,才有值,也就是说,在未得到该变量的赋值前,使用该变量会得到undefined. 而无论你把函数放在放在程序中的开头或者结尾,函数的执行语句都能正常执行. fn();//输出   fnconsole.log(fn2);/

JavaScript -基础- 函数与对象

一.JavaScript三对象 1.分类方式一 1)ECMAScript JavaScript的ECMA规范 JS本身的对象 2)Dom 操作HTML相关 3)BOM游览器对象 游览器窗口对象,全局的对象,直接应用 操作浏览器的对象 2.分类方式二 二.ECMA对象 var s="hello" var s2=new String("hello") 三.function对象 1.function创建方式一 此方式为推荐方式 function func1(){ aler

JavaScript -基础- 函数与对象(二)

一.typeof与判断对象类型instanceof 1.typeof typeof只能判断基础数据类型,无法判断引用数据类型 <script> var s="hello" var i=8; alert(typeof(s))                       //输出string alert(typeof(i))                        //输出number var s2=new String("hello2") alert

JavaScript -基础- 函数与对象(三)正则、Match对象

一.正则对象 1.创建方法 1)方式一 var re_obj=new RegExp("\d+","g") 规则+模式(g 全局模式/i 不区分大小写/gi) re_obj.test("asacdscsd124234")  //test方法只有两个返回值True.False 2)方式二 var re_obj2=/\d+/g; re_obj2.test("asacdscsd124234"); 二.Match对象 原文地址:http

JavaScript -基础- 函数与对象(四) BOM 对象

一.BOM对象 BOM游览器对象模型,可以与游览器对话 BOM下Window对象最重要,还有history.location对象 二.Window对象方法 1.alert提示框 2.confirm confirm("hello") 用处: 文件是对否保存 下载是否取消 var ret=confirm(“内容是否保存!”) alert(ret)   //返回值是Ture.False if (ret){ }else{ } 3.prompt输入框 var ret=prompr("h

【javaScript基础】立即调用函数表达式

在javaScript中,每个函数被调用时,都会创建一个新的执行上下文.因为在一个函数里面定义的变量和函数只能在里面访问,在外面是不行的,上下文提供了一种很容易的方法来创建私有性. //makeCounter函数返回另外一个匿名函数,这个匿名函数能够访问到"私有"变量i, 好像有一点"特权"性. function makeCounter() { // i只能在makeCounter的里面被访问到 var i = 0; return function() { cons

【javascript基础】2、函数

原文:[javascript基础]2.函数 前言 我在上一篇[javascript基础]基本概念中介绍了javascript的一些基本概念,多谢大家的阅读和意见,自己写的东西可以被大家阅读,真心高兴,刚开始发布的时候我一直盯着阅读人数,虽然知道大家可能就是点开一下而已,但是还是给我一些继续写下去的信心.那今天写一些关于javascript函数的一些知识,帮助大家熟悉或者复习一些函数的基本知识. PS:最近jQuery源码交流群( 239147101)加了不少热新人,希望大家还是以学习为主,尽量少