this的指向及构造函数

这篇博客详细探讨了JavaScript中的this关键字的指向规则,包括全局作用域、函数调用、构造函数以及定时器中的特殊情况。同时,文章介绍了构造函数的概念,包括new操作符的使用、构造函数的返回值以及new.target属性。此外,还讨论了Function构造函数、对象的静态和实例成员,以及Number等原始类型构造函数的相关方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this关键字

1、在全局作用域中都是指向window对象

2、函数作用域中 ,this指向取决于函数是如何被调用的,

       2.1直接调用函数,this的指向为 为window   

       2.2通过new 一个对象的方法  调用 this指向 这个对象 

注意:this不能被赋值,this的指向 取决于被谁调用

在定时器中的this固定指向 window

构造函数

普通的函数通过来获得的、构造函数

1、构造函数通过new创建对象

new的方式 ,将函数赋值给变量在调用变量  

构造函数内部会自动创建一个新的空对象

this指向新对象并且自动返回这个对象,所有的对象都是通过构造函数创建的

构造函数的返回值:

如果构造函数中手动书写了返回值  且属于基本数据类型,则直接会被返回值忽略

如果是一个引用型数据类型 这回直接返回书写的返回值

new.target 用于函数是使用new 调用 ,返回为函数体,如果不是则返回undefined

构造函数又称为构造器

函数的本质是对象 

所有的对象都可以通过new 函数来创建

所有的函数都可以通过 new Function 创建

注意:Function 在浏览器远行是js引擎中自动保存了Function

包装类:

原始数据类型是不能有属性和方法的,表示js为了增强基本数据类型的功能 ,在语法上,将数据类型当对象使用时,会在该位置利用对象的构造函数创建对象 来访问原始类型的属性

其中有  Number      String      Boolean

Object构造函数

实例成员(实例属性,方法 )表示该属性,方法,通过构造函数创建的对象去访问

静态成员(类属性,方法)表示该属性,方法通过构造函数直接调用

object中的静态方法 

{

keys:得到对象的属性名,组成的数组

values:得到对象的属性值,组成的数组

entries:得到对象属性名和属性值形成的二维数组

}

实例对象

{

对象.toString()每一个构造函数中都重写了toString  返回一个相对这个对象的字符串

对象.valueOf()默认情况下返回自己本身

}

js中当自动进行类型转换时,如果是一个对象进行转换,实际上是先将对象调用valueOf(),返回对象的原始值,在调用返回值的toString,如果对象中没有toString方法,再去原型中寻找toString 转换后的进行运算,

如果调用valueof 的返回值 为基本数据类型则,不会在调用toString()方法

Function 构造函数

实例属性:        属性 length 表示函数对象中形参的个数    

静态属性:arguments 获取函数调用是,传递的所有参数,所有的函数都具有Function中的实例成员

映射关系:arguments中存在的函数调用中传递的实参    有值才有映射

实例成员

{

apply:执行函数a,将函数a中的this指向b

call: 执行函数a ,需要用时:将函数a中的this指向 b

}

bind :返回一个新函数,该函数a中的this 始终指向b

1、相同点:

 三个函数都会改变this的指向(调用这三个函数的函数内部的this)

2、不同点:

 1)、bind会产生新的函数,(把对象和函数绑定死后,产生新的函数)

 2)、call和apply不会产生新的函数,只是在调用时,绑定一下而已。

 3)、call和apply的区别,第一个参数都是要绑定的this,apply第二个参数是数组(是函数的所有参数),call把apply的第二个参数单列出来。

原始类型构造函数

Numder 

静态方法

{

isNaN判断是否不是一个数

isFinitie:判断是否有限的

parseFloat  将一个字符串类型的数据转换为浮点数

parseInt 将一个字符串转化为整数

要求第一个参数为字符串  如果不是字符串  则会自动转换为字符串

从字符串的开始位置 进行查询,找到有效的数字进行转换,如果碰到没有有效的数字 直接NaN,如果碰到了非有效数字转换  左右空白直接忽略

parseInt 第二个参数   表示给字符串识别多少进制

静态成员:fromcharCode()   通过uniocode编码创建字符串 返回字符串

实例成员

length  

iscludes()   查询字符串中是否存在某个字符串,返回true  / false

bendswith() 判断字符串是否以指定的字符结尾

startswith() 判断字符串是否以指定的字符串,填充到指定的长度

padStart() 以指定的字符串填充到指定的长度  填充尾部

padEnd() 以指定的字符串填充到指定的长度 填充到头部

repeat() 构造一个新的字符串 参数为count 0-100之间

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值