JSDay3

let /var
let / var //let在当前,var是在windows
不给 let var 的情况下默认var
var b=200 === windows.b=200 === this.b=200;

var 和function提升
console.log(a)//函数的提升更高,程序运行中会为函数开辟栈
var a=100;
function a(){

}

数组:
reduce
sort
//排序
sort(function(a,b){
return a-b;
})

//打乱
sort(function(a,b){
return Math.random()>0.5;
})

构造函数(原型对象)
抽象: 建模的过程 (铸模)将食物的特征提炼并归纳到一起
实体:以抽象为模板出来的实例

构造函数:对对象生成的一个实例
Object
let obj={x:100,y:200} //new object()

//Student可以看做一个类
function Student(name,age,sex){//构造函数名首字母大写
//在内部使用了this关键字
this.name = name;
this.age=age;
this.sex= sex;
this.introduce1=function(){
console.log(My Name Is ${this.name});//反引号,美元符号{}
}
}

//构造函数的原型对象(共享给实例,不会被赋值,节约空间)prototype
Student.prototype.introduce2=function(){
console.log(My Name Is ${this.name});//反引号,美元符号{}
}

//使用new关键字调用
let stu1=new Student(‘AA’,20,‘man’);
//等同于 {name: age: sex}
let stu2=new Student(‘BB’,30,‘women’);
let stu3={name:‘CC’,age:30,sex:‘men’};
console.log(stu1,stu2,stu3);
stu1.introduce1();
stu2.introduce1();

//函数不是共享,造成资源的浪费
console.log(stu1.introduce1=stu2.introduce1);
console.log(stu1.introduce2
=stu2.introduce2);
console.log(stu1.proro,stu1.introduce1);
//对象和构造函数
//实例的原型:proro === 构造函数的原型对象

c语言中结构体的字节占用
struct a{
char level;1
int age;4
char sex;1
float score;4
double gorad:8
}//24个

创建一对象
1,创建一个模板(上面的Student例子);
2,对象的扩展,原型链
var s1={
name:‘aa’,
age:‘30’,
}
//原型链
//以一个现成的对象为原型,创建一个新的对象

let s2=Object.create(s1);
s2.sex=‘nan’;
console.log(s2);

let s3=Object.create(s2);
s3.gold=1000;

let s4=Object.create(s3);
s4.name1=‘caixukun’;
console.log(s4);

原生对象:、
包装对象:Number,Boolean,String//
var a=5;//定义的变量可以当做一个number类型的对象
a.toString()

instanceof()//判断莫一个对象那个是否属于一个对象
console.log(‘abc’ instanceof string);

Array:构造数组
let arr=[1,2,34];//一般使用第一种办法,比较适合书写习惯
let arr1=new Array(1,2,45);//直接赋值
let arr2=new Array(5)//代表数组的长度,5个空位 如果访问默认Undefined
//如果一个数组位置的值初始为undefined不会是空位
arr2[2]=undefined;
//空位的是undefined,值为undefined元素不是空位

Date;时间
1时间戳:19701.1.00经过的毫秒数
function f(){//一秒等于1000毫秒
let startTime=(new Date()).getTime();
let count=0;
while(count<10000000){
count++;
}
let endTime=(new Date()).getTime();
console.log(endTime-startTime,count);
}
f();

JSON
1,键名必须是字符串
2,如果值是引用类型,只能是数组或对象,如果是数字类型,只能是十进制,undefined不可以作为值使用。
JSON,toString()
//将对象转为JSON字符串
var obj1={x:100,y:200};
//先转成字符串,再解析
var obj2=JSON.parse(JSON.stringify(obj1));//深拷贝
obj2.y=300;
console.log(obj1,obj2);

正则表达式
RegExp:主要用于字符串的匹配
let reg=/abc/;
let str=‘abcdefg’;
console.log(str.match(reg));

let num=“sa4354fdsf6rgd667”;
// /\d /\d/g /d+/g /d:转义符
// /[a-zA-z]+/g //找出所有的字母 +贪心法则

作业:检测
let arr=[1,2,3,4,5,6,7,8,9];
//输出为[1,2,3]
[4,5,6]
[7,8,9]

理解:
forEcach只能用在数组上使用,字符串使用需要的方法
//字符串使用ForEach
console.log([].forEach.call(‘1,23,4,5’,function(e){
console.log(e+‘yes’);
}));

//鸭子类型
//y鸭子
function Dark(name){
this.name=name;
this.voice=“ga ga ga”;
}
Dark.prototype.cry=function(){
console.log(this.voice);
}
//狗
function Dog(name){
this.name=name;
this.voice="wang wang wang ";
}
Dog.prototype.cry=function(){
console.log(this.voice);
}

function animalcry(obj){//忽略对象的类型
obj.cry();
}

let t=new Dark(“tang”);
let d= new Dog(“wangsicong”);
t.cry();
d.cry();

//如何改变this的指向 call
d.cry.call(t);//call(传入的对象) dar内部也必须有一个this的指向

//函数 f 需要一个参数parm f 属于对象OBJ
//有另一个对象铂金,希望借调f
//写法为 object。f.call(obj2,parm)

//apply
//用call
let obj1={
tag :1000,
f:function(a,b){
return this.tag +a +b;
}
}
let obj2={
tag:2000,
}

console.log(obj1.f(3,4));//自己调自己的函数
console.log(obj1.f.call(obj2,3,4));//借被人的函数调用
//用apply
console.log(obj1.f.apply(obj2,[3,4]));//必须以数组的形式传参
//用bind
let f=obj1.f.bind(obj2);//直接吧f绑定到obj2
console.log(f(3,4));//绑定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值