1. 函数内部返回函数
function fun1() {
var n = 'df';
function fun2() {
alert("++++"+n+"++++");
}
return fun2; //返回的是方法fun2的引用
}
var rs = fun1(); //
rs(); //掉的是fun2方法
补充: 以上他妈的就是传说中的闭包,窝巢
2 . 函数定义和调用方式
var a = function (a, b) {
alert(a+b);
};
a(1,9);
匿名函数自调用
(function (a,b) {
alert(a+b);
})(2,5);
3. 变量作用范围
局部变量 :javascript里边:在函数内部声明的变量,变量前边有”var“关键字。
全局变量 :
① 在函数外部声明的变量
② 函数内部不使用“var”声明的变量(函数调用之后起作用)
4.JavaScript的面向对象
//this is like a class defined
function class_df(a) {
//私有属性
var name = a;
//like function public function
this.add = function (b) {
alert("add function run ...." + b);
};
//like function public function
this.getName = function () {
return name;
};
}
// create object to class
var ojb_df = new class_df('dengfei');
ojb_df.add("wonderfull");
alert(ojb_df.getName());
5. 对象调用其他函数/对象成员
var obj = {
name:"dengfei",
age:22,
pro:function(){
alert(this.name+"prommer-----");
}
};
function run() {
alert(this.name+"running。。。。。"); //这里的this代表调用这个方法的对象
}
obj.active = run; //给该对象整一个方法 引用传递 栈内存都指向function run
obj.active();
obj.pro();
6. 动态创建方法
var fun = new Function("name", "age", "alert(name+age);");
fun("dengfei",22);
7. return 对实例化对象的影响
function obj_fun(name , age ) {
this.name = name;
this.age = age;
this.eat = function () {
console.log(this.name+"eat ....");
};
return ;
this.sleeps =function () {
console.log("sleep.....");
};
}
var obj = new obj_fun("dengfei", 22);
console.log(obj); //obj_fun {name: "dengfei", age: 22}