web前端 js面向对象思想

本文探讨了JavaScript的面向对象思想,包括变量的作用域、变量提升、函数作为参数传递、函数作为特殊对象、回调函数、即时函数、内部私有函数、返回函数的函数以及闭包的概念,深入理解这些特性对于前端开发至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、变量的作用域

var global = 1;


function f(){

var local = 2;

global++;

return global;

}

结果:f() ~ 2;f()~3;local~referenceError:local  is  not  defined

解释://函数内的代码可以像访问自己的局部变量那样访问全局变量,反之,则不行


2、变量的提升

var a = 123;

function f(){

var a;    //same as:var a = undefined

alert(a);    //undefined

var a= 1;

alert(a);

}

解释:第一个alert()实际上显示的是undefined,这是因为函数域始终优先于全局域,所以局部变量a会覆盖掉所有与它同名的全局变量,尽管alert()第一次被调用时,a还没有被正式定义(即该值为undefined),但该变量本身已经存在本地空间了,这种特殊的现象叫做提升


3、函数名作为参数进行传递

var sum = function(a, b){

return a+b;

}

function a(){

return 1;

}


function b(){

return 1;

}

sum(a,b)  //结果是2;

4、函数是特殊数的一种

var sum = function(a,b){

return a+b;

}

var add =sum

typeof add;  //结果:function

5、回调函数

function multiplyByTwo(a,b,c,callback){

var i,ar = [];

for(i=0;i<3;i++){

ar[i]=callback[arguments[i]*2]

}

return ar;

}

multiplyByTwo(1,2,3,function(a){

return a+2;

})                              //结果是[4,6,8]

6、即时函数

(

function(name){

alert("hello"+name+"!");

}

)("dude")               //结果是hellodude

两种写法

(1)(function(){}());

(2)(function(){})();

7、内部私有函数

var outer = function(param){

       var inner = function(theinput){

return theinput * 2

      };

return "the result is"+ inner(param);

}


outer(2);  结果 the result is 4

outer(3),结果 the result is 16

使用确保私有性,有助于我们确保全局名字空间的纯净性


8、返回函数的函数

function a(){

alert("a!");

return function(){

alert("b!")

}

}

a()   //结果a!,

function () {
                alert("b!")
            }

a()() //结果是a!,b!


9、闭包就是指的是函数的变量的作用域

(1)、作用域链

var a= 1;

function f(){

var b =1;

return a;

}

最后3个我也不是很会,还在研究,自学吧~

10、利用闭包突破作用域链

11、循环中的闭包(分为两种)

12、将两个函数放在一个共同的函数中,使两个函数能够共享同一个作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值