JS-函数

函数
JS没有函数重载,方法名是唯一标示。(传入的参数匹配不上,或不传入参数,程序可以正常执行),如果方法名相同,参数列表不同,后定义的函数会覆盖前面的函数。

1.定义命名函数:

function 方法名(参数){

}

2.定义匿名函数,可以将函数赋值给变量

function(参数){

};
function(参数){

};
a=function(name){
        document.writeln(name)
    };
a("AAAA")

3.定义Function类匿名函数

a=new Function("name","AAAAAAAAAA","DDDDDDDDD",  //参数名称
        "document.write(DDDDDDDDD)"     //最后一个是方法的执行体,将对应的参数传入(是第三个)  )
a("FFFFFFF","DDDDDDDDDA","ddaaaaaaaa")  //参数,可以少传入,只要执行体所需的参数在
执行结果:输出ddaaaaaaaa

4.局部函数:在外部函数中定义的函数

在外部函数中定义局部函数,需要手动调用后才执行;直接调用局部函数不执行

function name(name){    
    function inner1(name){   
        document.writeln(name+1)   
        }       
    function  inner2(){   
        document.write("============")   
        }       
    inner2()    
    inner1(name)   
  }
  name("e");

5.调用方式

(1)直接调用:返回值是方法中return语句返回的对象,没有return不返回

function name(name){  
    return name 
    }
var a=name("aaaaaaaaa")
var b=new name("BBB")alert(a+"\n"+b)     //aaaaaaaaa
                                           [object Object]

(2)使用new关键字调用:返回的是一个JavaScript对象

6.this关键字

(1)被this关键字修饰的变量不再是局部变量,是该函数的实例变量

​ 将函数赋值给对象需要使用匿名函数,通过对象调用

function name(name){      
    this.name=name      
    this.inner=function (){   
    document.writeln(this.name)     
    }    
 }
    //创建对象  
 var a=new name("sAAAAAAAs")
 a.inner()

(2)使用命名函数调用,因为没有明确函数附加的对象需要使用window对象

var b=name("DDDDDDDDDD")
window.inner()

区别:是否创建对象–>使用命名函数还是匿名函数

7.实例属性和类属性

实例属性:this,使用对象调用

类属性:使用类调用

function name(N,age){
        this.name=N   //实例属性
        name.age=age  //类属性
        var bl=0
        this.inner=function (){
            document.writeln(this.name)
        }
    }
    var a=new name("A",32)
    document.writeln(a.name)
    document.writeln(name.age)
    document.writeln(name.bb)   //局部变量无法在函数外调用

    打印结果:A 32 undefined

对类属性赋值,相当于给函数的对象添加属性

var a=new name("A",32)
document.writeln(a.name)
document.writeln(a.age)
a.age=40
document.writeln(a.age)

var b=new name("B",1)
document.writeln(b.name)
document.writeln(b.age) //没有给b对象添加属性,所以值为undefined
打印结果:AS undefined 32 40 B undefined

8.函数的参数处理:基本类型、复合类型

JavaScript采用值传递方式,传入的是形参,不会改变参数本身;

传入的是复合类型(对象,数组等),采用的是引用传递(值传递,但是传入的是引用)

9.JS函数没有继承,使用prototype。是修改了原有的类,不是创建了子类,之前的类将不存在。是伪继承机制,对原有类的扩展。

直接写在函数中或者添加方法,性能低,每次创建Person类时系统都会创建新的age函数;函数中如果有变量在外部引用,会造成内存泄漏。

function Person(name){
    this.name=name;
    }
    var a=new Person("aaa")
    Person.prototype.age=function(){
        document.write("--sssssssss-");
    }
    a.age();
    document.write(a.name);

10.创建对象

使用new

var a=new Person()

使用Object

var a=new Object();
a.name="aaa";//增加属性
a.info=function abc(){
  document.write(this.name);
}

使用JSON

var a={
    name:"AAAAAAA";
    age:"12"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值