javascript面向对象精要学习总结(第一章 类型)

原始类型共5种
  • string | number | boolean | undefined | null
内建引用类型共5种
  • Date | Error | Function | Object | RegExp
数组的动态方法
var arr = [1,2,3];
arr["push"](5);
console.log(arr);//[ 1, 2, 3, 5 ]
判断数组的最佳方法
  • Array.isArray(),node环境也支持
正则表达式的转义
  • 如果需要通过变量构造表达式,则使用构造函数(注意,需要对任何反斜杠进行转义)
  • 如果不需要动态构造表达式,则使用字面量
var nums = /\d+/g;
var nums = new RegExp("\\d+","g");
理解引用类型,堆内存和栈内存
  • 栈内存中保存了变量标识符和指向堆内存中该对象的指针
  • 堆内存中保存了对象的内容
判断对象为空
  • 最佳办法是直接和null对比( val===null )
  • 因为 typeof null === “object”,这一设计被官方认为是一个错误
主动解除对象引用
  • 注意,引用类型变量标识符和原始类型一样,存放在栈内存中
  • 最佳方式是将对象变量置为 null,以释放内存
  • 在大型程序中,主动解除十分重要
原始类型不是真正的对象
  • 尽管,原始类型拥有方法,看上去像对象一样(指Object类型)
  • 实际上,这只是js在语言一致性上,所做的封装
  • 实际上,包装类型数据,才是真正的对象
var str1 = "abc";
var str2 = new String("abc");
str1.color = "red"
str2.color = "red"
console.log(str1.color);//undefined
console.log(str2.color);//red
console.log(str1);//abc
console.log(str2.color);//String{"abc", color: "red"}
引用类型传值陷阱
function A(){return 5};
var book = {
    name:"english",
    price:100,
};
var obj = {
	name:"zk",
	fun:A,
	book:book,
};
obj.fun();//5
//重新声名A函数,并不会改变obj对象中fun方法的指向
function A(){return 6};
obj.fun();//5
book.price = 999;
obj.book.price;//999,改变了obj中book属性的值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值