js基础知识之二

今天在看视频,学到原型链部分了,正好将之前的知识补充一下,三局口诀

  1. 每一个函数,都有一个天生自带的属性,prototype,也叫原型,这个属性是一个对象数据类型
  2. 在prototype这个对象上,浏览器默认给它添加了一个属性,constructor,指向当前的函数
  3. 每个对象都有一个自带的属性,__ proto __,这个属性指向当前实例所属的类的实例对象

Object这个类是所有类的基类,如果从之前的推理路径推断的话,它的原型对象指向了原型对象自己,事实上
Object.prototype.__ proto__ 值为null
讲解是说Object对象的原型对象没有这个属性 __ proto __ ,但是如果没有,应该是undefined才对,但是这里是null,并且在chrome里面查看,确实是没有这个属性的。

对了,__ proto __之前是说在生产省不要使用这个属性,就是因为在IE上直接使用这个属性会报错,因为IE为了保护原型上的属性不会瞎改。

continue与break的不同

其实对这两个关键字,理解的比较肤浅,都是跳出,但是break是会跳出整个循环,主要用在switch语句里面
而continue只是跳出当前循环,比如for循环中,在一次循环中,命中了某个条件,这次循环就跳出,继续下次循环,如果break在这儿,这整个循环就都结束了。
看下面的代码就能很明白的知道两者的不同,如果使用break,那就比较暴力了,直接 掀桌子,像古惑仔乌鸦一样,大家后面都没得吃了,但是如果是continue呢,小时候大家排队打饭,本来你前面有个人,突然被踢走了,这个人不在,直接过了,就到你了


   var text="";
    for (i = 0; i < 10; i++) {
        console.log(i);

        // if (i === 3) { break; }
        if (i === 3) {
            continue
            console.log(55);
        }
        text += "数字是 " + i + "<br>";

    }
    console.log(text);

贴一个数组去重的写法,之前没尝试过,

    /*
    * 数组去重方法
    * */
    Array.prototype.myUnique=function () {
        var obj={}
        for(var i=0;i<this.length;i++){
            console.log(i);
            var cur=this[i];
            if(obj[cur]===cur){
                this[i]=this[this.length-1]; //将这个用最后一个替换掉,并且,将数组缩短
                this.length--;
                i--; // 因为将数组缩短了,所以,需要将i减一,这样,这个地方的值还能被判断,必须减一
                continue
            }
            obj[cur]=cur
        }
        obj=null
        return this
    }

    var arr1=[1,2,3,4,5,1,2,3,4,5];
    arr1.myUnique()

后面还有东西没搞完,时间太晚了,后面继续补上

原文地址:https://www.cnblogs.com/ysla/p/14141789.html