定时器、引用数据类型、原型

定时器

1.定时器是一个异步对象;

2.定时器有一个返回值,这个返回值代表了在程序中他是第几个定时器

3.定时器的清除原理是阻止了定时器的函数体执行,这个定时器本身仍然存在,其返回值序号也存在

引用数据类型

在存储引用数据类型过程中,我们是拿不到引用数据类型里面的数据的,只有存储完毕,才可以拿到它的值

var obj={
    name:'js',
    can:(function () {
        console.log(obj);
        return obj.name;
    })(),
    do:function () {}  
};
console.log(obj.can)

原型链与作用域链 

原型链:在构造函数中,如果我们需要找到new出来函数中的某个属性,就会通过--proto--往所属类的原型(prototype)一步一步往上查找,直到找到Object为止,这个查找的过程就称为原型链;

作用域链:在一个函数体中,用到了某个变量,首先我们会在当前作用域下查找这个变量,如果当前作用域下没有,就会一级一级往上查找,直到找到window为止,这个过程称为作用域链;

体验原型题:

判断某个属性是不是函数的公有属性:先使用in判断是不是该函数的属性,然后通过hasOwnProperty判断是不是私有属性,如果是false,则是公有属性!

//in :公有属性和私有属性都可以判断
function FF() {
    this.a="aa";
}
FF.prototype.A="AA";
var f=new FF;

console.log("a" in f);
console.log("A" in f);
//hasOwnProperty判断是不是自己的私有属性
console.log(f.hasOwnProperty("a"));
console.log(f.hasOwnProperty("A"));

可以通过constructor.name来判断某个变量是基本数据类型还是引用数据类型:

//可以使用xx.constructor.name来检测xx的数据类型
console.log([1, 2, 3].constructor.name);//"Array"
var obj={a:"a"};
console.log(obj.constructor.name);//"Object"
function fn() {}
console.log(fn.constructor.name);//"Function"
var n=1;
var str="123";
var b=true;
console.log(n.constructor.name);
console.log(str.constructor.name);
console.log(b.constructor.name);

原型是一个对象,拥有constructor属性,如果我们给prototype重新赋值一个对象,此时constructor属性就会丢失,我们可以手动加上constructor的值。

function FF() {
    this.x="xx";
}
FF.prototype={
    getX:function () {},
    constructor:FF
};
var f =new FF();

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值