JavaScript函数与面向对象基础_js

一 、javaScript函数分类

1、普通函数

function 函数名(){函数体}

调用方式 :函数名()

2、匿名函数

function (){函数体}

调用:一般在做好里面直接调用,相当于整体放进去,如:

setInterval(function (){函数体}){函数体}

3、自执行函数

(function(){})()

自动执行,常用于导入的插件

二、作用域

1、js以函数作为作用域

2、函数的作用域在函数被调用之前,已经创建

3、函数的作用域存在作用域链并且也是被调用之前创建(例如函数套函数链)

    x=0
    function func() {
    var x=1
    function inner() {
    console.log(x)
    }
    return inner
    }
    ret=func()
    ret() #打印的是1

4、函数内部局部变量会提前声明

 (1)

function fun() {
console.log(xo);
}
fun() //程序会报错

(2)
function fun() {
console.log(xo);
var xo='chen'
}
fun() //会打印undefind

5、总结词法分析顺序例子:

function fun(age){
console.log(age); //function age
var age=32;
console.log(age); //32
function age() {};
console.log(age);//32
}

fun(22)

分析先后顺序:

(1)、形式函数

  a、age=undefined

  b、age=22

(2)、局部变量

  a、age=undefined

(2)、函数声明表达式

  a、age=undefined

  b、age=function表达式

分析之后拿着 age=function函数体 开始去从上往下执行,所以得出上面的结果

三、面向对象

1、格式

function Foo(n) {
this.name=n;
this.sayName=function () {
console.log(this.name)
}
}
var obj=new Foo('chen')
console.log(obj.name)
obj.sayName();

this:代指对象(相当于python的self)
创建对象时,new 类()

2、python的类的函数自动保存在类中,js中的类自动保存在对象中,浪费内存空间
原型:让需要的js函数保存在类中:
function Foo(n) {
this.name=n;
Foo.prototype={
'sayName':function () {
console.log(this.name)
}}
}
var obj=new Foo('chen')
console.log(obj.name)
obj.sayName();






原文地址:https://www.cnblogs.com/chenxiaozan/p/12726550.html