面向对象包括:
1类:浏览器的分类(不同人物)
2原型 :存放类的方法(技能槽)
3原型链:继承(公共基本技能)
1.什么是对象?
a.只要是对象就有自己的私有属性
var str = '123'
var str2 = new String('123')
str.a = 10
str2.a = 10
console.log(str.a,str2.a) //undefined 10
b.只要是new出来的,就都是对象
var num = new Number('1')
var str = new String('123')
c.不同对象肯定不会相等,即使长得一样
var arr = [1]
var arr2 = [1]
arr === arr2 //false
d.对象会有引用机制,不想引用需要重新赋值
var a = [1,2,3]
var b = a
b.push(4)
a = [1,2,3,4]
//如果不想a被改变
var a = [1,2,3]
var b = a
b.push(4)
a = [1,2,3] //重新赋值
a = [1,2,3]
有三种声明方式:
1.字面量:字面上显示出来的
2.包装类:没有new的函数声明,不是对象的
var str = '123' typeof str = 'string'
var str = new String('123') typeof str = 'object'
var str = String('123') typeof str = 'string'
typeof能判断的数据类型:function,string,number,boolean,object,undefined,symbol
null和Array 的结果都是object,判断不出来
内存机制:
回收机制:如果声明完以后没有调用,系统会自动回收释放内存
自己回收有两种
1.null
2.delete 但是只能删除对象的属性,对象其实还在,不算回收
Object 是个大类的父级,所以Object的方法属性,各类都能用,但是各类的私有方法,Object父级就用不了,而且各类之间的属性方法也不能共用。