js理解面向對象(一)


一、什么是對象:

  在java、actionscript等語言中都有對象(類的概念),我的理解是對象就是屬性和方法的集合,在編程語言中有一句話叫一切皆對象,Object對象是所有對象的基類,都是繼承Object;

二、在js中對象的創建:

1、用new關鍵字創建對象:

var obj=new Object();

new 關鍵字是語法糖,他創建了一個實例對象,繼承了Object的屬性和方法,以下是new 經歷哪些步驟和代碼模擬

<script type="text/javascript">
    function Persion(){
        /**
        *func:構造函數
        */
        this.dec="這是描述";
    }
    Persion.prototype.sayHell=function(){
        console.log("您好");
    }

    function desaginNew(tt){
        /*
        *func:模擬new關鍵字;
        */
        //第一步:創建新的對象;
        var obj={};
        var creatObj=[].shift.call(arguments);

        //第二步:改變this指向,把新的對象的_proto_指向Persion對象的prototype原型對象;
        obj._proto_=creatObj.prototype;

        //第三步:執行構造函數的代碼為新對象添加屬性和方法;
        Persion.call(obj);

        //第四步:返回對象;
        return obj;
    }
    var newPersion=desaginNew(Persion);
</script>

 

2、用字面量創建對象:

var obj={name:"",age:"",say:function(){}};

3、構造函數創建對象:

構造函數:在java語言中類的定義中都有構造函數,在js中也有構造函數的概念,Object對象都有constructor構造函數方法;

js中Object對象都有以下屬性和方法:

1、constructor:構造函數屬性,它指向了Object()函數;

2、hasOwnProperty:判斷是否是對象自身屬性和方法;

3、isPrototypeOf:判斷是否是某個對象的子對象即繼承某對象;

    function Persion(){
        /**
        *func:構造函數
        */
        this.name="名字";
        this.say=function(){
            console.log("您好");
        }
    }
    //自身屬性要實例化后才能訪問屬性和方法;
    console.log(new Persion().name);//"名字"
    console.log(new Persion().say());//"您好;

4、es6中新增class關鍵字創建類

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM