1 对象基础知识
初级和中级的分水点:面向对象(类、原型和原型链)
平时使用的json都是new Object()缩写
var json=new Object();
var json2={};
console.log(json,json2)//都一样
字面量:字面上显示的东西就叫做字面量
var a1='abc'
console.log(a1)//abc
包装类:没有new的函数声明就是包装类,不是对象
var a3=String('abc')
什么是对象?
- 只要是对象就可以有自己的私有属性 obj.a=10;
- 只要是new出来的都是对象 var obj=new String()等等
- 不同对象肯定不相等,就算长得一样也不相等 var a={a:10};var b={a:10}; console.log(a==b)//false
- 对象都会有引用机制,如果不想引用就重新赋值
let a=[1,2,3]
let b=a;
b.push(4)
console.log(a)//[1,2,3,4]
let a={};
let b=a;
b.c=10;
console.log(a)//{c: 10}
var arr2=[1,2,3]
function show(arr){
arr.push(1)
}
show(arr2)
console.log(arr2)//[1, 2, 3, 1]
delete只可以删除对象的属性,删不了对象。想删除对象可以直接把对象赋值给null
var a={b:10};
delete a.b;
console.log(a)
function函数也算是对象
面向对象最有用的就是私有属性
2 this指向
①普通函数--指向window
function show(){
console.log(this)
}
show()//window
②有事件源指向事件源本身
document.onclick=function(){
console.log(this)
}
③在定时器下除es6 this指向window
④在对象下this指向的是自己本身
let json={
a:function(){
console.log(this);
}
}
json.a()