成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript中幾個重要的知識點(1) ---- 面向?qū)ο?

acrazing / 1805人閱讀

摘要:中幾個最重要的大知識點面向?qū)ο笫录惒浇换ッ嫦驅(qū)ο笤谥锌梢园讶我獾囊煤妥兞慷伎闯墒且粋€對象。我們可以寫一個通用方法來模擬面向?qū)ο笳Z言的多態(tài)

JavaScript中幾個最重要的大知識點

面向?qū)ο?/p>

DOM事件

異步交互ajax

面向?qū)ο?/b>

在JS中可以把任意的引用和變量都看成是一個對象。面向?qū)ο蟮闹饕齻€表現(xiàn)形式:

封裝

繼承

多態(tài)

1. 封裝
1.1 單例模式
var obj={
    name: "sam",
    age: 12,
    method: function(){
        var objName=this.name;
        return objName;
    },
    ale: function(){
        var that=this;
        function sum(num1,num2){
            this.num=that.age;
            return num1+this.num+num2;
        }
        console.log(sum(1,2));
    }
}

單例模式有不污染全局變量和節(jié)約window棧內(nèi)存的優(yōu)點

var main={
    init:function(){
        this.changeName();
    },
    changeName:function(){
        var that=this;
        var oBody=document.body;
        oBody.onclick=function(){
            that.changeValue();
        }
    },
    changeValue:function(){
        document.getElementById("one").value="sam";
    }
}

main.init();
1.2 工廠模式

能夠快速地根據(jù)不同需求,傳入不同參數(shù),來返回不同的對象,缺點是不能判斷對象的類型

function self(name,age,sex){
    var person={};
    person.name=name;
    person.age=age;
    person.sex=sex;
    if(sex=="man"){
        person.job="coder";
    }
    if(sex=="woman"){
        person.job="beatiful";
    }
    return person;
}
var mine=self("sam",22,"man");
console.log(mine.job);
1.3 構(gòu)造函數(shù)模式

構(gòu)造函數(shù)模式能夠解決工廠模式不能判斷對象類型的缺點,構(gòu)造函數(shù)模式能夠自定義類,構(gòu)造具有相同屬性和方法的實例

function Person(){
    this.eat="food";
    this.sleep="night";
    this.say=function(){
        console.log("I am person,I can speak");
    }
}
var person1=new Person();
person1.say();

call()和apply()方法

call()方法:
讓調(diào)用對象執(zhí)行,然后第一參數(shù)是誰,調(diào)用對象的this就改變指向是誰,后邊跟參數(shù),依次對應(yīng)傳入

apply()方法:
讓調(diào)用對象執(zhí)行,然后第一參數(shù)是誰,調(diào)用對象的this就改變指向是誰,后邊跟參數(shù),以數(shù)組的形式傳入

2.繼承
2.1 原型繼承

把被繼承者的構(gòu)造函數(shù)賦值給繼承者的prototype,注意需要給繼承者的prototype手動添加constructor屬性

function A(){
    this.name="A";
    this.sayHi=function(){
        console.log("Hi!I am A");
    }
}

function B(){
    this.name="B";
    this.age=22;
    this.sayHi=function(){
        console.log("Hi,I am B");
    }
}
B.prototype.work=function(){
    console.log("I can play");
}

A.prototype=new B();
A.prototype.constructor=A;
var a=new A();
console.log(a);
2.2 call / apply 繼承

把被繼承者設(shè)置的私有屬性,克隆一份作為繼承者私有的

function A(){
    this.name="A";
    this.age=22;
    this.sayName=function(){
        console.log("I am A");
    }
}

function B(){
    A.call(this);
}

var b=new B();
console.log(b);
2.3 冒充對象繼承

繼承者繼承了被繼承者私有和公有的屬性和方法

function A(){
    this.x=100;
}
A.prototype.getX=function(){
    console.log(this.x);
}

function B(){
    var temp=new A();
    for(var key in temp){
        this[key]=temp[key];
    }
}

var b=new B();
console.log(b);
3. 多態(tài)

javascript中沒有嚴(yán)格的多態(tài),因為JS中沒有重載,相同名字的函數(shù)不能同時存在,后定義的重名函數(shù)會覆蓋先定義的函數(shù)(即使兩個形參不相同)。我們可以寫一個通用方法來模擬面向?qū)ο笳Z言的多態(tài)

function simPoly(){
    if(arguments.length==1){
        return function(){
            console.log(1);
        }
    }
    if(arguments.length==2){
        return function(){
            console.log(2);
        }
    }
}

simPoly(1,2)();

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83661.html

相關(guān)文章

  • JavaScript幾個重要識點(2) ---- DOM事件

    摘要:使用來移除事件,參數(shù)必須與要移除的事件處理函數(shù)地址指針相同。在低版本瀏覽器中,綁定級事件的方法為中的級事件的事件處理程序都是在冒泡階段執(zhí)行的。 JavaScript中幾個最重要的大知識點 面向?qū)ο?DOM事件 異步交互ajax 事件 事件就是文檔和瀏覽器的瞬間交互行為 1.事件類型 點擊: click 滾輪: scroll 滑動: move 進(jìn)入: enter 加載: load ...

    dantezhao 評論0 收藏0
  • JavaScript幾個重要識點(3) ---- Ajax

    摘要:與響應(yīng)不同的是,身份驗證并不能提供任何幫助,而且這個請求也不應(yīng)該被重復(fù)提交。 JavaScript中幾個最重要的大知識點 面向?qū)ο?DOM事件 異步交互ajax AJAX AJAX是異步的javascript和xml(Asynchronous Javascript And XML)的縮寫,用于網(wǎng)頁局部刷新,提升用戶瀏覽體驗 通常前端程序員關(guān)于AJAX的掌握僅僅停留在會用AJAX發(fā)送...

    starsfun 評論0 收藏0
  • Javascript幾個看起來簡單,卻不一定會做

    摘要:作為前端開發(fā)必須掌握的一門語言,因為語言的靈活性,有些知識點看起來簡單,在真正遇到的時候,卻不一定會直接做出來,今天我們就一起來看看幾道題目吧題目這道題考察的知識點是運算符的優(yōu)先級。 Javascript作為前端開發(fā)必須掌握的一門語言,因為語言的靈活性,有些知識點看起來簡單,在真正遇到的時候,卻不一定會直接做出來,今天我們就一起來看看幾道題目吧 題目1 var val = smtg; ...

    itvincent 評論0 收藏0
  • css幾個重要概念

    摘要:包含塊是一個相對的概念,比如子元素的初始化布局總是在父元素的左上角,這就是一個相對的概念。每個元素都會生成一個包含塊,但這個包含塊是虛無的,你看不到也摸不著,只是一個概念。這個屬性在新的版本中已經(jīng)移除了,可以不用關(guān)注該屬性了。 替換元素與非替換元素 替換元素:是指瀏覽器根據(jù)元素的標(biāo)簽和屬性來決定元素的具體內(nèi)容。 例如瀏覽器會根據(jù)標(biāo)簽的src屬性的值來讀取圖片信息并顯示,瀏覽器會根據(jù)i...

    darkbug 評論0 收藏0
  • css幾個重要概念

    摘要:包含塊是一個相對的概念,比如子元素的初始化布局總是在父元素的左上角,這就是一個相對的概念。每個元素都會生成一個包含塊,但這個包含塊是虛無的,你看不到也摸不著,只是一個概念。這個屬性在新的版本中已經(jīng)移除了,可以不用關(guān)注該屬性了。 替換元素與非替換元素 替換元素:是指瀏覽器根據(jù)元素的標(biāo)簽和屬性來決定元素的具體內(nèi)容。 例如瀏覽器會根據(jù)標(biāo)簽的src屬性的值來讀取圖片信息并顯示,瀏覽器會根據(jù)i...

    piapia 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<