js笔记(三)this this this...js中的this(1)

26 篇文章 0 订阅
20 篇文章 1 订阅

js笔记(三)js中的this

何为this?

说起this真是让我感到深恶痛觉,我在学习js时,几个朋友一直说js作用域与作用域链是最恶心的,我差点就信了,直到this这个鬼东西出现了…
那this到底为何物呢?这个不是很好定义,但是就我的理解呢,this就是一个对象,这个对象是谁呢,要我说就是谁调用的函数,this就是谁。那问题就来了,这个谁调用的?就是个问题,代码问题还是举例说明的好:

var obj = {
	fun: function () {
		console.log(this) 
	}
}
obj.fun() // obj

上面的代码就说明了,obj.fun也就是obj调用了fun那么this就是obj喽,当然可定有小伙伴表示不服,fun就是obj的方法,this当然就是obj。。。 ,废话不多说上代码:

var obj = {
	fun: function () {
		console.log(this) 
	}
}
var fn = obj.fun
fn() // Window

what? 怎么就成了window了呢?上面这种写法是将obj.fun赋值给了fn,在fn执行时就是window.fn()
this当然是window喽。

this这个鬼,有啥用呢?

俗话说的好存在即合理,this既然存在就一定有他的作用,我总结了几点,

  1. 原型链编程。
    嘻嘻不知道这个说法是不是我原创,但是我觉得这么说很是合适,所谓原型链编程就是在对象的原型链上写方法和属性,说起来好像高大上了呢,其实只要用过js的小伙伴都离不开原型链上的方法和属性,比如说:
var str = 'test'
str.indexOf('e')

那indexOf就是字符串原型链上的方法,那所谓原型链编程又是什么鬼呢,上例子:

var str = '  abcde '

这个时候我想写一个方法去除str的空格,通常来说就是:

function trim(s){
    return s.replace(/(^\s*)|(\s*$)/g, "");
}
trim(str)

大功告成… 这样可以但是我觉得不好,咱可以利用原型链和this这样写:

String.prototype.trim = function () {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}
str.trim()

然后在所有字符串想去除空格时去调用这个方法就可以了,这也是面向对象的一种表现。突然有事今天写到这,闪人。。。 明天继续。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值