#在函数中使用
##在函数中直接使用
+严格模式和非严格模式this的指向问题
-严格模式下this指向undefined
-非严格模式下this是指向window
function get(){
console.log(this)
}
get()

function get(){
‘use strict’
console.log(this)
}
get()
+函数在被直接调用的时候其中的this指针永远指向window
+匿名函数的this总是指向window对象的
+谁执行函数,this就指向谁
+如果函数new了一下 就会创建一个对象,this是指向新创建的对象的
+谁执行了函数 this就指向谁
-全局的上下文(GO)代码载入浏览器中的时候 全局环境被创建 当我们关闭浏览器的时候 被销毁
-函数的上下文(AO)函数在执行的时候 一定有额外的信息来支撑的 function是对象 就会有方法,function中最最核心的call 方法。
+call 方法的时候、
…js
function say(content) {
console.log(“from”+this +”:hello”+content)
}
say.call(‘bobo”, “lmj”)
say()
…js
1.把第二个到最后一个参数作为函数执行时要传入的参数
2.把函数执行时的this指向的是第一个参数
3.调用函数的语法糖
…js
function say(content){
console.log(content)
}
say(‘hello word’)
//say.call(window,”hello word”)

(function(name){
})(‘bobo’)
(function(name){
}).call(window, ‘bobo’)
…js

##函数作为对象的方法去调用

var person = {
name: ‘bobo’,
run: function(time) {
      console.log(`${this.name} 跑了${time}分钟就不行了`)
}
}
person.run(30)
person.run.call(person, 30)
```js
例子一:
```js
var x = 10
var obj = {
  x:20,
  f:function(){
    console.log(this.x)
    var foo = function()(console.log(this.x)}
    foo()
  }
}
obj.f()
```js
//例题看哔哩哔哩

#不在函数中
```js
//不在函数中使用的时候,this还是指向了window
var a = 100
var obj = {a:1,b:this.a+1}
console.log(obj.b)
```js

#ES6的箭头函数中的this
```js
//箭头函数没有this  默认指向定义他的时候的执行期上下文所在的对象

#函数在当作构造函数的时候 也同样可以用call代替

function person(name){
  var _newObj = {
constructor:person,
_proto_:person.prototype
}
_newObj.constructor(name)
// _newObj.constructor.call(_newObj,name)
return _newObj
})()
Logo

前往低代码交流专区

更多推荐