成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

javascript系列之構(gòu)造對象

psychola / 2725人閱讀

摘要:構(gòu)造函數(shù)模式使用操作符后跟構(gòu)造函數(shù)隱式原型指向由構(gòu)造函數(shù)構(gòu)造出來指向由函數(shù)構(gòu)造使用對象字面量表示法還支持對象和數(shù)組字面量,允許使用一種簡潔而可讀的記法來創(chuàng)建數(shù)組和對象。通過同一個構(gòu)造函數(shù)創(chuàng)建出來的對象,共享同一個原型對象。

構(gòu)造函數(shù)模式

1.使用new操作符后跟Object構(gòu)造函數(shù)

var  person = new Object();
person.name = "kitty";
person.age = 25;

person.__proto__(隱式原型)指向Object.prototype.

2.由構(gòu)造函數(shù)構(gòu)造出來

function Car(sColor,iDoors,iMpg) {
   this.color = sColor;
   this.doors = iDoors;
   this.mpg = iMpg;
   this.showColor = function() {
      alert(this.color);
   };
}

var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);

person.__proto__指向Car.prototype.
3.由函數(shù)Object.create構(gòu)造

var person1 = {
    name: "cyl",
    sex: "male"
};

var person2 = Object.create(person1);
使用“對象字面量”表示法

JavaScript還支持對象和數(shù)組字面量,允許使用一種簡潔而可讀的記法來創(chuàng)建數(shù)組和對象。

var person = {
    name : "kitty",
    age:25
};
工廠模式
function createCar(sColor,iDoors,iMpg) {
    var oTempCar = new Object;
    oTempCar.color = sColor;
    oTempCar.doors = iDoors;
    oTempCar.mpg = iMpg;
    oTempCar.showColor = function() {
        alert(this.color);
    };

    return oTempCar;
}

var oCar1 = createCar("red",4,23);
var oCar2 = createCar("blue",3,25);
oCar1.showColor();      //輸出 "red"
oCar2.showColor();      //輸出 "blue"

前面的例子中,每次調(diào)用函數(shù) createCar(),都要創(chuàng)建新函數(shù) showColor(),意味著每個對象都有自己的 showColor() 版本。而事實上,每個對象都共享同一個函數(shù)。javascript中沒有什么static和成員變量之分,如果想在對象之間共享數(shù)據(jù)或方法,只能借助原型對象,將共享的變量和方法都放在原型對象中。

原型方式
function Car() {}
  Car.prototype.color = "blue";
  Car.prototype.doors = 4;
  Car.prototype.mpg = 25;
  Car.prototype.drivers = new Array("Mike","John");
  Car.prototype.showColor = function() {
       alert(this.color);
   }
};

var oCar1 = new Car();
var oCar2 = new Car();
oCar1.drivers.push("Bill");

alert(oCar1.drivers);  //輸出 "Mike,John,Bill"
alert(oCar2.drivers);  //輸出 "Mike,John,Bill"
混合的構(gòu)造函數(shù)/原型方式(相對完美的解決方式)

聯(lián)合使用構(gòu)造函數(shù)和原型方式,就可像用其他程序設(shè)計語言一樣創(chuàng)建對象。這種概念非常簡單,即用構(gòu)造函數(shù)定義對象的所有非函數(shù)屬性,用原型方式定義對象的函數(shù)屬性(方法)。結(jié)果是,所有函數(shù)都只創(chuàng)建一次,而每個對象都具有自己的對象屬性實例。

function Car(sColor,iDoors,iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array("Mike","John");
}

Car.prototype.showColor = function() {
    alert(this.color);
};

var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);
oCar1.drivers.push("Bill"); 

alert(oCar1.drivers);  //輸出 "Mike,John,Bill"
alert(oCar2.drivers);  //輸出 "Mike,John"

JS的構(gòu)造函數(shù)都有一個prototype屬性,指向它的原型對象(其實就是個普通的JS對象)。通過同一個構(gòu)造函數(shù)創(chuàng)建出來的對象,共享同一個原型對象。原型對象初始化的時候是空的,我們可以在里面自定義任何屬性和方法,這些方法和屬性都將被該構(gòu)造函數(shù)所創(chuàng)建的對象繼承。如果原型發(fā)生了變化,那么所有實例都會跟著改變。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/93793.html

相關(guān)文章

  • JavaScript深入new的模擬實現(xiàn)

    摘要:深入系列第十二篇,通過的模擬實現(xiàn),帶大家揭開使用獲得構(gòu)造函數(shù)實例的真相一句話介紹運算符創(chuàng)建一個用戶定義的對象類型的實例或具有構(gòu)造函數(shù)的內(nèi)置對象類型之一也許有點難懂,我們在模擬之前,先看看實現(xiàn)了哪些功能。 JavaScript深入系列第十二篇,通過new的模擬實現(xiàn),帶大家揭開使用new獲得構(gòu)造函數(shù)實例的真相 new 一句話介紹 new: new 運算符創(chuàng)建一個用戶定義的對象類型的實例或具...

    tianlai 評論0 收藏0
  • JavaScript深入從原型到原型鏈

    摘要:深入系列的第一篇,從原型與原型鏈開始講起,如果你想知道構(gòu)造函數(shù)的實例的原型,原型的原型,原型的原型的原型是什么,就來看看這篇文章吧。讓我們用一張圖表示構(gòu)造函數(shù)和實例原型之間的關(guān)系在這張圖中我們用表示實例原型。 JavaScript深入系列的第一篇,從原型與原型鏈開始講起,如果你想知道構(gòu)造函數(shù)的實例的原型,原型的原型,原型的原型的原型是什么,就來看看這篇文章吧。 構(gòu)造函數(shù)創(chuàng)建對象 我們先...

    Songlcy 評論0 收藏0
  • JavaScript系列 - 深入從原型到原型鏈

    摘要:本文詳情構(gòu)造函數(shù)創(chuàng)建對象先使用構(gòu)造函數(shù)創(chuàng)建一個對象在這個例子中,就是一個構(gòu)造函數(shù),我們使用創(chuàng)建了一個實例對象。 本文詳情:https://github.com/mqyqingfen... 構(gòu)造函數(shù)創(chuàng)建對象先使用構(gòu)造函數(shù)創(chuàng)建一個對象 function Person(){ } var person = new Person(); person.name = Mit; console.lo...

    shadajin 評論0 收藏0
  • JavaScript深入創(chuàng)建對象的多種方式以及優(yōu)缺點

    摘要:深入系列第十四篇,講解創(chuàng)建對象的各種方式,以及優(yōu)缺點。也就是說打著構(gòu)造函數(shù)的幌子掛羊頭賣狗肉,你看創(chuàng)建的實例使用都無法指向構(gòu)造函數(shù)這樣方法可以在特殊情況下使用。 JavaScript深入系列第十四篇,講解創(chuàng)建對象的各種方式,以及優(yōu)缺點。 寫在前面 這篇文章講解創(chuàng)建對象的各種方式,以及優(yōu)缺點。 但是注意: 這篇文章更像是筆記,因為《JavaScript高級程序設(shè)計》寫得真是太好了! 1....

    Terry_Tai 評論0 收藏0
  • JavaScript深入繼承的多種方式和優(yōu)缺點

    摘要:深入系列第十五篇,講解各種繼承方式和優(yōu)缺點。優(yōu)點融合原型鏈繼承和構(gòu)造函數(shù)的優(yōu)點,是中最常用的繼承模式。寄生組合式繼承為了方便大家閱讀,在這里重復(fù)一下組合繼承的代碼組合繼承最大的缺點是會調(diào)用兩次父構(gòu)造函數(shù)。 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點。 寫在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點。 但是注意: 這篇文章更像是筆記,哎...

    JackJiang 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<