前端微信扫码支付开发 |
前端如何开发微信公众号的页面 |
微信公号前端开发 |
this的四种调用方式:
1.普通函数来调用
this的值指向->window
准确的说this为null,但被解释为window
在ECMAscript5标准中,如果this为null,则被解释为undefined。
javascript 代码
alert(window.x)
function t() {
this.x = 333
}
t()
alert(window.x)
2.作为对象的方法来调用
this指向方法的调用者,即母体对象。
javascript 代码
var obj = {
xx: 999,
yy: 888,
t: function() {
alert(this.xx)
},
}
obj.t() //999
var dog = { xx: ‘wangwang’ }
dog.t = obj.t
dog.t() //wangwang
show = function() {
alert(this.xx)
}
dog.t = show
dog.t() //wangwang
3.函数作为构造函数调用时
js中没有类的概念,创建对象使用构造函数来完成的,或者直接用json格式{}来写。
javascript 代码
function Dog(name, age) {
this.name = name
this.age = age
this.back = function() {
alert(‘This is ‘ + this.name + ‘!’)
}
}
var dog = new Dog(‘huzi’, 2)
dog.back()
new Dog 发生了以下几个步骤:
a:系统创建空对象{},(空对象constructor的属性指向Dog函数,)
b:把函数的this指向该空对象Dog
c: 执行该函数
d:返回该对象
下面的代码运行结果返回的是什么?
javascript 代码
function Pig() {
this.age = 99
return ‘abc’
}
var pig = new Pig()
console.log(pig)
答:返回pig对象,因为函数作为构造函数运行时,return的值是忽略的,还是返回对象。
4.函数通过call,apply调用时
语法格式:函数.call(对象,参数1,参数2···参数n);
javascript 代码
function t(num) {
alert(‘我的真实年龄是’ + this.age)
alert(‘但我一般告诉别人我’ + (this.age + num))
}
var humen = { name: ‘yike’, age: 23 }
humen.t = t
humen.t(-10) //this指向humen,但是humen多了一个方法属性
//接下来,我们不把t赋值给humen的属性,也能把this指向humen。
var wangwu = { name: ‘wangwu’, age: 30 }
t.call(wangwu, 5)
fn.call(对象,参数1,参数2···参数n);运行如下:
a:fn函数中的this指向对象obj
b:运行fn(参数1,参数2···参数n);
总结
this的指向:
1.普通函数中的this指向全局对象window
2.构造函数内部this指向新创建出来的对象
3.对象方法内的this指向的是调用该方法的对象
4.call,apply,bind可以改变this的指向
微信小程序的前端开发 |
h5微信支付前端开发教程 |
微信开发 前端 后端 |
评论前必须登录!
注册