一日客家话:月饼 捏ㄅ一ㄤˇngied5biang31
primitives 是不可变
non-primitives 是可变的
他们记忆体的值到底存啥?
为何mdn Primitive values 上写 no methods 但 string 有方法可以使用?
Primitive values
和Non-primitive
primitive
基本型别mdn:
a primitive (primitive value, primitive data type) is data that is not an object and has no methods.
Q:为何 mdn 上写 no methods 但 string 有方法可以使用?(先跳过,待会再来讨论)
Number — 整数、浮点数
String — 字串
Boolean — true or false
又有特殊型别
Null
Undefined
Symbol(ES6新增)
BigInt
说说 null 奇怪的地方
使用 typeof 可以检查型别,当使用 typeof null 时会回传 object
浏览器图示:
Non-primitives
又称Reference Types/Object typeprimitives之外就是object型别
objects
arrays
functions
可以更改物件的特性和阵列的元素
non-Primitives
和Primitive values
记忆体的值到底存啥?primitive:存值, 是by value,当比较时只要是相同值才会视为相同
object 型别:值是存reference参照(在heap的记忆体位置)
所以物件比较即使拥有相同的特性和值,两个物件仍不相同,一个存值一个存记忆体位址
null
和undefined
可以代表没有物件
可以代表没有值
typeof 是object(特别)
null 是自己型别的唯一成员
null 能代表数字和字串,指的是no value
表示尚未初始化变数的值
是 global object
是不是偷偷做了什麽事?
let myString = 'apple';
console.log(myString.replace('a','ooo'))//ooopple
因为有基本型别包裹器 (Primitive Wrapper)
以下型别会有基本型别包裹器
当企图使用 primitive 的 property 会短暂的创建 wrapper object
型别会自动转型(隐含的转型)为物件型别 :String
、Number
、BigInt
、Boolean
、Symbol
意思是:在执行属性、方法会使用 new 关键字来建构函式
第一句:
let myString = 'apple';
当执行第二句:
console.log(myString.length);
要执行myString.length!!! 那就要使用new啦
流程:
new 关键字:let myString = new String('apple')
myString此刻是物件,可以存取属性、方法!!
可以执行console.log(myString.length);
执行结束再转回基本型别
今日学习到这里~下跪一鞠躬
资料参考:
Mutability Vs Immutability In JavaScript
重新认识 JavaScript: Day 23 基本型别包裹器 Primitive Wrapper
mdn
JavaScript大全
JavaScript # 11 — 基本型别包裹器 (Primitive Wrapper) 、建构式 (Constructor)
create a temporary wrapper object
>>: [13th][Day12] docker commit
第一天,想笔记下我对资讯安全的理解。 资讯安全怎麽来的? 我印象里的历史战争剧中,国家或两个阵营打仗...
如果你正在为水电或3C故障而苦恼,也许照着影片操作,是可以完成修复,但网路影片并非每一样技术都可以直...
有关於实际业务上对於数据要求的重要性,以下参数设定的写入策略搭配会对性能与安全度产生不同的影响。 ...
昨天我们已经把资料写进去了, 今天要开始显示留言板了, 但是首先我们需要抓使用者的图片, 所以要先在...
今天要比较的是「属性绑定」, Alpine.js使用的是x-bind:属性=""...