学习时间 | 完成时间 ✅ | 重难点 | 疑问/遗漏 |
---|---|---|---|
复习时间 | |||
闭包
高级程序设计第四版定义:闭包是指那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。
对象
var obj={
name:'ckl',
age:18,
teach: function(){}
}
添加对象:
obj.address='北京'
删除对象
delete obj.age
获取对象的key
Object.keys(obj) //["name", "age", "teach"]
获取对象的values
Object.values(obj) //["ckl", 18, ƒ]
获取对象的key和values
Object.entries(obj) //[["name", "ckl"],["age", 18],["teach", ƒ]]
//创建对象的方式
var obj=new Object();
obj.name='ckl';
//自定义构造函数 大驼峰
function Teacher() {
this.name='张三'; //this只有被实例化new的时候才会被创建
this.sex='男士';
this.smoke=function(){
console.log('I am smokeing')
}
}
var teacher=new Teacher()
function Car() {
this.car='car'
console.log('this',this)
//return this; //会隐士的返回this 所以new出来的对象和this全等
}
(1)Car();
(2)var car=new Car()
在没有实例化的时候(没有执行2),this指向的是window,只有当实例话的时候
this指向实例化的对象,this的指向一定是实例化的对象,而不是构造函数
当构造函数被实例话的时候,就像普通的函数被执行,只要构造函数执行就会创建构造函数的上下文
AO={
this:{car:car}
}
包装类
原始数据类型
var num=3
var a=new number(3)
a.len=3
此时a就会有len属性
var arr=[1,2,3,4,5]
arr.length=2;
console.log(arr) //[1,2]
var str=’abc’
str.length=1
console.log(str)// ‘abc’
length对数组会截取,对字符串不会截取
//第一题
var name='languiji'
name+=10;//'languiji10'
var type=typeof(name);//'string'
//(1) var type=new String(typeof(name)) 加上这一句下面才会打印type.text==='string'
if(type.length===6) {
type.text='string'
}
console.log(type.text)//undefined
//第二题
function Test(a,b,c) {
var d=1;
function f(){
d++;
console.log(d);
}
this.g=f;
}
var test1=new Test();
test1.g();//2
test1.g();//3
var test2=new Test();
test2.g();//2
//第三题
var x=1,y=z=0;
function add(n) {
return n=n+1;
}
y=add(x);
function add(n) {
return n=n+3
}
z=add(x)
console.log(x,y,z) //1,4,4
//第四题
function foo1(x) {
console.log(arguments)
return x;
}
foo1(1,2,3,4,5);
function foo2(x){
console.log(arguments)
return x
}(1,2,3,4,5)
(function foo3(){
console.log(arguments)
return x
})(1,2,3,4,5)
只有1,3可以打印出1,2,3,4,5
foo2不执行,如果foo2里没有数值则会报错
第五题
function b(x,y,a) {
//a=10;
//console.log(argument[2]) 10
arguments[2]=10;
console.log(a);//10
}
b(1,2,3) //如果a没有传则 形参与arguments的映射就没有,此时再打印arguments为undefined
ASCII码
ASCII码 表1 0~127 一个字节 byte 表二 128~255
UNICODE码 涵盖ASCII码
var str='abc'
var pos=str.charCodeAt(0);此处的0表示字符串第零个位置的字符对应的码
作业
function Car(opt){
this.brand=opt.brand;
this.color=opt.color;
this.displacement=opt.displacement;
}
function Person(opt){
this.name=opt.name;
this.age=opt.age;
this.income=opt.income;
this.selectCar=function(){
var myCar=new Car(opt.carOpt);
console.log(this.name+'挑选了一辆排量为'+myCar.displacement+'的'+myCar.color+myCar.brand)
}
}
var jone=new Person({
name:'约翰',
age:29,
income: '20k',
carOpt:{
brand:'马自达',
color:'红色',
displacement: '2.0'
}
})
jone.selectCar();