1. 程式人生 > >js理解面向對象(一)

js理解面向對象(一)

object 步驟 面向對象 模擬 mar 字面量 es6 語法糖 rop

一、什麽是對象:

  在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關鍵字創建類

js理解面向對象(一)