js函数相关的复习

1.构造函数(这个构造函数在开发的时候是很少使用的)

var fun =new Function('console.log("这是我的第一个函数");');

fun();

2.声明函数

function fun2(){

console.log(‘这是我的第二个函数 ——————’)

}

console.log(fun2)

3.函数表达式               

var fun3=function(){

console.log('我是匿名函数中封装的代码');

}         

fun3()  //调用该函数

然后我们尝试给函数传入参数  我们这边该如何传值呢?

function sum (a,b){

console.log(a+b);

}

sum(1,2)

小提示:return后面的提示都不会执行 return后面不跟值 那么他会输出undefined

下面说下break  return  continue

break 这个是直接跳出当前的循环  (比如:12345    中间3判断  输出结果   123)

continue  用于跳过当次循环       (比如:12345    中间3判断  输出结果   1245)

return 结束当前的循环    (比如:12345    中间3判断  输出结果   12)

55

匿名函数

立即执行函数 函数被定义了被立刻执行了

(function(){

alert('我是一个匿名函数');

})();

匿名函数这样的写法是直接被调用的

一个很奇葩的写法

(function(){

console.log('a='+a)

console.log('b='+b)

})(123,456)

这个返回出来的是   a=123 b=456

56

这边提及到了一个对象里面是可以放函数的

 var obj =new Object();

obj.name='孙悟空'

obj.age=23

obj.sayName=function(){

console.log(obj.name)

}

obj.sayName()  //返回的是一个函数

函数也是可以做为属性的

那么我们称这个函数的时候叫做这个对象的方法

调用的函数就是调用对象的方法(method)

个人理解(在我们正常开发的过程中  我们会使用到很多封装好的框架  这里大多都是对象的方法或者叫做对象的函数)

let obj ={

name:"猪八戒",

age:23,

}

for(var n in obj){

console.log('hello')

}

这个for in 会输出两个hello

语法:

for(var 变量 in 对象){

}

58

作用域 指的就是一个变量的作用范围

function fun(){

var a=123

}

fun()

console.log(a)  //这边等于underfined  因为变量声明是在函数中

作用域中分为两种  1.全局作用域 2.局部作用域

  1.全局作用域

全局作用域是编写在script标签中的  都是全局作用域

全局作用域在页面打开的时候打开 关闭的时候关闭

在全局作用域中有一个全局对象叫做 window  它是由浏览器创建的  我们是直接可以在浏览器中使用 的

2.局部作用域

局部作用域是在函数中定义的

例子

function fun (){

consloe.log("hahhaha ")

}

window.fun()  //这个和fun()效果是一样的  当你创建一个方法的时候  也就是在window中创建了这个方法

我们所谓的函数就是window对象中 的方法

重点:这节课讲到了一个函数的声明提前的问题

就是大多数js代码都是代码是自上而下运行的  

但是注意了 在非函数表达式声明的函数这块可不一样了  函数是可以声明提前的 

59

函数作用域 

调用函数的时候  创建函数作用域  函数执行完毕的之后  函数作用域摧毁

在函数作用域中  我们是可以访问到全局的变量 但是在全局作用域中  是无法访问到函数中的局部作用域成立的变量的

这里面讲到了一个函数作用域里面的一个声明提前的示例

var a = 0   //在全局声明一个a

function fun(){

console.log(a)

var a =123

}

fun();  //这个里面输出的书underfined

这个函数只能的var a被提前声明了 

function fun(){

var a 

console.log(a)

a =123

}

fun();  //这个里面输出的书underfined  也就是相当于这样

60

debug

这一集里面将的是浏览器中debug

61

this相关知识

根据函数的调用方式的不同 ,我们this会指向不同的对象

1.以函数的形式调用 this永远是window

2.以方法的形式调用时候,this就是调用方法的那个对象

 当直接fun()调用函数的时候  返回的是        【object window】

 但是我们将这个放到一个对象里面使用obj.sayName()去调用的时候  我们这边会发现结果为【object object】  这个现象我们应该怎么解释呢

62

this的相关补充       

63 

使用工厂函数的方式创建对象

他讲的就是一个函数里面封装一个对象  在调用函数的时候  给函数里面传值 就是这样的一个简单的东西  叫起来倒是挺高大上的

64

构造函数

function Person(){

}

var per=new Person()  //调用构造函数的时候 前面是要加上new的

console.log(per)   //这边直接就可以返回一个对象了

这里就涉及到一个知识点

1.当你调用一个函数的时候  这边就立马会创建一个对象

2.将新建的对象设置为我们函数的this

3.逐行执行我们函数中的代码

4.将新建的对象,作为返回值返回出来

function Person(){

this.name="孙悟空"

}

var per=new Person()  //调用构造函数的时候 前面是要加上new的

console.log(per.name)   //这边返回 孙悟空

console.log(per)           //这边就是直接返回一个对象

65

没有意思

66

原型对象

原型prototype

我们创建的每一个函数,解析器都会向函数中添加一个属性  prototype

function person(){

}

consloe.log(person.prototype)  //这边打印出来是一个对象【object object】

如果我们的函数就当普通函数调用这个没有什么效果

当函数通过构造函数调用的时候 它创建的对象中有一个隐含的函数

指向该函数的原型对象 我们可以通过_proto_来访问该对象

function MyClass(){

}

let mc =new MyClass()

console.log(mc.__proto__==MyClass.prototype)  //我们就是这样访问的//true

原型对象就相当于一个公共区域,所有同一个类的实例都可以访问这个原型对象

我们可以将对象中共有的内容,同意设置在原型对象中

当我们访问对象的一个属性的时候 ,我们会先在对象自身中寻找,如果有则直接使用

如果没有的话  直接会在原型对象中寻找 

function MyClass(){

}

MyClass.prototype.a=123

let mc=new MyClass()

console.log(mc.a)    //123

以后我们创建构造函数时候 可以将这些对象共有的属性和方法 写在原型对象中

67

原型对象2

 这边讲到了一个判断对象中有没有相关属性的方法 这个很有意思的  这边记录下

使用这个in检查我们的对象中是否有name这个字段 如果对象中没有  原型中有的话 也是会返回        true的

 或者我们可以使用hasOwnpriperty("name") 来检查对象中是否含有该属性

但是使用该方法 只有我们对象中含有属性的时候 才会返回true  只有原型中有的话是false的

68

toString()

这边讲到了  使用tostring的使用  会变到原型对象里面   这样解决

 69

垃圾回收机制(GC)

程序运行过程中是会产生垃圾的 当垃圾积攒过多的时候  我们代码的运行速度会变慢

因此我们需要垃圾回收的机制  来处理我们程序运行中产生的垃圾

当一个对象没有任何的变量或者属性对它进行引用  此时他就变为了垃圾 这种对象过多  会大量占用我们的内存空间  导致程序变慢     所以底下就抛出一个问题  这个垃圾怎么清理????

然后他说js会自己处理垃圾 看了个寂寞。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值