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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript中幾個(gè)重要的知識(shí)點(diǎn)(1) ---- 面向?qū)ο?

acrazing / 1855人閱讀

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

JavaScript中幾個(gè)最重要的大知識(shí)點(diǎn)

面向?qū)ο?/p>

DOM事件

異步交互ajax

面向?qū)ο?/b>

在JS中可以把任意的引用和變量都看成是一個(gè)對(duì)象。面向?qū)ο蟮闹饕齻€(gè)表現(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)點(diǎn)

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ù),來(lái)返回不同的對(duì)象,缺點(diǎn)是不能判斷對(duì)象的類(lèi)型

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ù)模式能夠解決工廠模式不能判斷對(duì)象類(lèi)型的缺點(diǎn),構(gòu)造函數(shù)模式能夠自定義類(lèi),構(gòu)造具有相同屬性和方法的實(shí)例

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)用對(duì)象執(zhí)行,然后第一參數(shù)是誰(shuí),調(diào)用對(duì)象的this就改變指向是誰(shuí),后邊跟參數(shù),依次對(duì)應(yīng)傳入

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

2.繼承
2.1 原型繼承

把被繼承者的構(gòu)造函數(shù)賦值給繼承者的prototype,注意需要給繼承者的prototype手動(dòng)添加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 冒充對(duì)象繼承

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

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中沒(méi)有嚴(yán)格的多態(tài),因?yàn)镴S中沒(méi)有重載,相同名字的函數(shù)不能同時(shí)存在,后定義的重名函數(shù)會(huì)覆蓋先定義的函數(shù)(即使兩個(gè)形參不相同)。我們可以寫(xiě)一個(gè)通用方法來(lái)模擬面向?qū)ο笳Z(yǔ)言的多態(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

  • JavaScript幾個(gè)重要識(shí)點(diǎn)(2) ---- DOM事件

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

    dantezhao 評(píng)論0 收藏0
  • JavaScript幾個(gè)重要識(shí)點(diǎn)(3) ---- Ajax

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

    starsfun 評(píng)論0 收藏0
  • Javascript幾個(gè)看起來(lái)簡(jiǎn)單,卻不一定會(huì)做

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

    itvincent 評(píng)論0 收藏0
  • css幾個(gè)重要概念

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

    darkbug 評(píng)論0 收藏0
  • css幾個(gè)重要概念

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

    piapia 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<