写在结尾
- 越是高级的岗位,从事越底层的工作,就越须要你对基础知识扎实,我当前不会再跟以前一样搞那么十几个的手写源码教程了,会更专一根底
- 今天是
1024
, 我会在公众号送出【100 个现金红包
】,不关注
也能够参加抽奖,大家记得参加就好。(并非为了宣传公众号,就简略发个福利,让大家快乐冷落下, 不少号主也常常抽到我的礼品) - 明天钻研的是
字符串
正式开始
-
为什么要钻研字符串
- 因为
JS
有一个非凡点:typeof null
后果是object
- 因为
- 还有一个起因是:字符串居然有办法,然而它又不能够设置属性。让咱们用代码揭晓
const str = '前端巅峰 Peter 老师牛逼'
str.xxoo = '你关注了吗?'
console.log(str.xxoo, 'xxoo')
- 后果输入:
undefined
-
为什么?
- 因为字符串是根底数据类型,具体答案看前面。
可是字符串为什么又有办法?
- 用代码谈话:
const str = '前端巅峰 Peter 老师牛逼'
console.log(str.substring(1), 'xxoo')
- 后果输入:
端巅峰 Peter 老师牛逼
- 划重点思考:为什么这个字符串 又有了办法?明明它只是一个
字符串
啊!
被遗留的创立创立字符串办法
- 还有一种创立字符串办法,咱们忘了。
const str = new Object('前端巅峰 Peter 老师牛逼')
console.log(typeof str, 'str')
- 打印后果:
obect
- 通过
new Object
创立的字符串,居然typeof
后果是object
, 那么我想,会不会是以某种状况拜访字符串时,会主动转换成这样后果呢?
揭晓答案
-
咱们创立好了字符串后,通过平时的模式 例如:
const str = '特皮牛逼'
, 而后再去调用它的办法时,会有以下几个步骤:- 申明字符串:
const str = '特皮牛逼'
- 拜访它的属性(办法):
str.substring(1)
-
以读模式拜访
str
这个字符串,会有接下来几个步骤- new String 返回一个实例
- 调用实例上的
substring
办法 - 销毁实例
- 我之前文章提到过,
JS
外面的字符串一旦创立,他们的值就不能扭转。要扭转某个变量的保留的的字符串,首先要销毁原来的字符串,而后再用另外一个蕴含新值的字符串填充该变量 - 所以下面这段代码,实在的运行应该是:
- 申明字符串:
原始代码:const str = 'Peter 老师 666'
str.substring(1)
真正外部执行的是:let str = new String('Peter 老师 666')
let str1 = str.substring(1)
str = null
重点:
JS
外面的字符串一旦创立,他们的值就不能扭转。要扭转某个变量的保留的的字符串,首先要销毁原来的字符串,而后再用另外一个蕴含新值的字符串填充该变量
那么为什么给字符串设置属性为什么有效呢?
- 咱们申明:
const str = '前端巅峰'
- 而后给它设置属性
str.xxoo = 'xxoo'
- 而后咱们读取它的属性
str.xxoo
-
这期间经验了什么:
str.xxoo = 'xxoo'
时,首先会创立一个实例,给这个实例上设置xxoo
属性的值为:xxoo
- 当这行代码执行完了,这个实例就销毁了
- 于是当咱们拜访
str
的时候,并没有这个属性
这就叫原始值包装类型,它的申明周期只是这一行拜访它的代码执行完就销毁了。这是它与援用类型的区别,咱们通过 new String()创立的实例就是一个援用类型,所以它是一个
object
.
通过 new String 创立的实例是一个对象(援用类型)
- 代码:
const str = new String('前端巅峰 Peter 老师牛逼')
console.log(str, 'str')
- 所以
typeof str
失去的后果是:object
写在最初
- 如果有什么写得不好的中央,能够在上面评论指出,平时比较忙,当前会尽量写一些根底、底层被忘记的知识点, 不忘初心, 写文章为了让更多人学到他们想要的
- 如果感觉写得不错,点个
赞 / 在看 / 关注
吧, 公众号:[前端巅峰
]