javaScript【建立對象、建立類、成員變量、方法、公有和私有、靜態】

建立對象

方式①

直接使用new Object()javascript

var obj = new Object();

方式②

使用空的{}大括號php

 var obj2 = {};

測試

這裏寫圖片描述

增長屬性,訪問屬性

咱們要爲建立的對象增長屬性和訪問屬性的值java

使用.操做符增長屬性

JavaScript是弱類型的語言,能夠動態的添加屬性。markdown

obj.age = 20;
    obj.name = "zhongfucheng";
    obj.say = function () {
        alert("hello");
    };

測試

這裏寫圖片描述


使用.操做符訪問屬性

var aa = obj.age;
    var bb = obj.name;

測試

這裏寫圖片描述


使用[]操做符訪問屬性

var aa = [obj["age"]];
    var bb = [obj["name"]];

測試

這裏寫圖片描述


建立類

方式①

使用function來模擬建立類,function充當了構造函數函數

//測試函數
        function test() {

            var teacher = new Teacher();

        }

        //使用function來模擬類
        function Teacher() {

        }

測試

這裏寫圖片描述


方式②

上面的function來模擬類很容易和函數混淆。測試

咱們通常這樣作:用一個變量記住一個匿名的function當作是類,function充當了構造函數this

function test() {

            var teacher = new Teacher();

        }
        var Teacher = function () {


        };

測試

這裏寫圖片描述


方式③

使用JSON語法來建立類,也就是對象直接量定義方法spa

 var obj = { age: 20, str: "zhongfucheng", method:function () { alert("aaa"); } };

測試

這裏寫圖片描述


公有屬性和方法

咱們建立公有屬性應該在類中指定,建立公有方法應該使用原型對象prototypeprototype

prototype定義的屬性就相似於Java的靜態成員:在原型對象上定義了屬性,擁有這個原型對象的function所建立的對象也擁有定義的屬性!因此,咱們方法中就使用prototypecode

var obj = function Teacher(name) {
            this.name = name;
            if( typeof obj._init=="undefined") {
                obj.prototype.setName = function (name) {
                    this.name = name;
                };

                obj.prototype.getName = function () {
                    alert(this.name);
                };
            }

            obj._init = true;
        };

建立兩個不一樣的Teacher對象,name屬性是不同的。而它們共享同一份setName()和getName()方法

這裏寫圖片描述

值得注意的是:prototype定義的屬性只可讀的。若是你想要使用具體對象寫prototype的屬性,實際上並非寫,而是從新爲該類定義了一個同名(和prototype同名)的屬性。在讀取同名屬性的時候,優先讀取對象上的屬性,而不是prototype的。


私有屬性

咱們在Java中,定義私有屬性是經過關鍵字private來修飾的。。

在JavaScript中是沒有這樣的關鍵字的,咱們須要這樣作:定義在方法內【也就是function內部,也能夠看做成構造函數】的變量,就是私有變量。

var obj = function Teacher(name) {

            //這是私有屬性,外界不能訪問
            var age = 23;

            //這是公有屬性,外界能夠訪問
            this.name = name;

            //想要訪問私有變量age,只能在這裏編寫方法來訪問。其他的地方都不行!

            //咱們一般就是在這裏編寫公有方法來訪問私有屬性

        };

靜態屬性和方法

在JavaScript中定義靜態屬性其實就是經過prototype原型對象來定義的

定義靜態的時機:

  • 當類的某個值與對象無關指望全部位置看到的結果是同樣的時候,就能夠定義爲類靜態屬性
  • 若是類的一個方法作的是和具體對象無關的操做,而是作一些工做操做的時候,就能夠將這個方法定義爲靜態的類方法
//靜態屬性TYPE
    Book.TYPE = 「IT」;

    Book.print = function(){alert(Book.TYPE);}
相關文章
相關標籤/搜索