1. 程式人生 > >原型鏈整理

原型鏈整理

proto clas 本質 這就是 new turn 結構 簡單 string

/*判斷類型*/
    function show(x){
        /*undefined,number,string,boolean屬於簡單的值類型,值類型的判斷用typeof*/
        console.log(typeof x);//undefined
        console.log(typeof 10);//number
        console.log(typeof ‘abc‘);//string
        console.log(typeof true);//boolean
        /*函數,數組,對象,null,new Number(10)都是對象,都是引用類型,引用類型的判斷用instanceof*/
        /*一切引用類型都是對象*/
        console.log(typeof function(){});//function
        console.log(typeof [1,‘a‘,true]);//object
        console.log(typeof {a:10,b:20});//object
        console.log(typeof null);//object
        console.log(typeof new Number(10));//object

        console.log(function(){} instanceof Object);//true
        console.log( [1,‘a‘,true] instanceof Object);//true
        console.log({a:10,b:20} instanceof Object);//true
        console.log(null instanceof Object);//false
        console.log(new Number(10) instanceof Object);//true
    }

/*對象都是通過函數創建的*/
    var  obj={a:10,b:2};
    var obj=new Object();/*代碼的本質*/
        obj.a=10;
        obj.b=20;
    /*每個函數都有一個屬性叫prototype,這個prototype的屬性值是一個對象(屬性的集合)
    * 默認的只有一個叫做constructor的屬性指向這個函數本身*/
        function  name(){
            console.log(555)
        }
        name.prototype.liuhao=function(){
            console.log(555555)
        }
        console.log(name.prototype)/
        console.log(name.prototype.constructor)
    /*Fn是一個函數,fn對象是從Fn函數new出來的,這樣fn對象就可以調用Fn.prototype中的屬性*/
    function Fn(){}
    Fn.prototype.name="liuhao";
    Fn.prototype.getYear=function(){
        return 1998;
    }
    var fn=new Fn();
    console.log(fn.name)
    console.log(fn.__proto__===Fn.prototype)//__proto__:隱式原型
    /*每個函數function都有一個prototype,即原型。每個對象都有一個__proto__,隱式原型*/
    /*每個對象都有一個__proto__屬性,指向創建該對象的函數的prototype*/
    /*Object.prototype確是一個特例--它的__proto__指向的是null*/
    /*函數是誰創建出來的--是Function*/
    function fn2(x,y){
        return x+y;
    }
    console.log(fn2(1,2));
    var fn1=new Function("x",‘y‘,"return x+y");

/*instanceof  A instanceof B
* instanceof 的判斷規則是:沿著A的__proto__這條線來找,同時沿著B的prototype
* 這條線來找,如果這兩條線能找到同一個引用,即同一個對象,那麽就返回true
* 如果找到終點還未重合,則返回false
* instanceof 表示的就是一種繼承關系,或者原型鏈的結構
* 訪問一個對象的屬性時,先在基本屬性中查找,如果沒有,再沿著__proto__這條鏈
* 向上找,這就是原型鏈
* */

  

原型鏈整理