国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS面向對象1

xumenger / 585人閱讀

摘要:什么是面向對象編程用對象的思想去寫代碼,就是面向對象編程過程式寫法面向對象寫法我們一直都在使用對象數組時間面向對象編程的特點抽象抓住核心問題封裝只能通過對象來訪問方法繼承從已有對象上繼承出新的對象多態多對象的不同形態對象的組成方法行為操作對

什么是面向對象編程

用對象的思想去寫代碼,就是面向對象編程

過程式寫法

面向對象寫法

我們一直都在使用對象

數組Array 時間Date

面向對象編程(OOP)的特點

抽象:抓住核心問題

封裝:只能通過對象來訪問方法

繼承:從已有對象上繼承出新的對象

多態:多對象的不同形態

對象的組成

方法(行為、操作) —— 對象下面的函數:過程、動態的

屬性 —— 對象下面的變量:狀態、靜態的

創建第一個面向對象程序
//var obj = {};
var obj = new Object(); //創建了一個空的對象
obj.name = "小明"; //屬性
obj.showName = function(){ //方法
    alert(this.name);
}
obj.showName();

為對象添加屬性和方法

Object對象

this指向

創建兩個對象:重復代碼過多

//var obj = {};
var obj = new Object(); //創建了一個空的對象
obj.name = "小明"; //屬性
obj.showName = function(){ //方法
    alert(this.name);
}
obj.showName();
var obj2 = new Object(); 
obj2.name = "小強";
obj.showName = function(){
    alert(this.name);
}
obj2.showName();
工廠方式

面向對象中的封裝函數

//工廠方式:封裝函數
function createPerson(name){
    //1. 原料
    var obj = new Object();  
    //2. 加工
    obj.name = name;
    obj.showName = function(){
        alert(this.name);
    };   
    //3. 出廠
    return obj;
}
var p1 = createPerson("小明");
p1.showName();
var p2 = createPerson("小強");
p2.showName();

改成與系統對象類似的寫法
1、首字母大寫
2、New關鍵字提取
3、this指向為新創建的對象

/* 當new去調用一個函數:這個時候函數中的this就是創建出來的對象,而且函數的返回值直接就是this啦。(這叫做隱式返回) */
// new后面調用的函數:構造函數
function CreatePerson(name){
    this.name = name;
    this.showName = function(){
        alert(this.name);
    };
    // return obj; 隱式返回,所以這一行不用寫了
}

var p1 = new CreatePerson("小明");
p1.showName();
var p2 = new CreatePerson("小強");
p2.showName();

構造函數
用來創建對象的函數,叫做構造函數
存在的問題
1、對象的引用
2.浪費內存

/* 當new去調用一個函數:這個時候函數中的this就是創建出來的對象,而且函數的返回值直接就是this啦。(這叫做隱式返回) */

// new后面調用的函數:構造函數
function CreatePerson(name){
    this.name = name;
    this.showName = function(){
        alert(this.name);
    };
    // return obj; 隱式返回,所以這一行不用寫了
}
var p1 = new CreatePerson("小明");
p1.showName();
var p2 = new CreatePerson("小強");
p2.showName();

//alert(p1.showName == p2.showName); //false
/*
    var a = [1, 2, 3];
    var b = [1, 2, 3];

    alert(a == b); //false;
*/

/*
    var a = 5;
    var b = a;
    b += a;
    alert(b); //8
    alert(a); //5 基本類型:賦值的時候只是值的復制
*/

/*
    var a = [1, 2, 3]; 
    var b = a; 
    b.push(4);
    alert(b); //[1, 2, 3, 4]
    alert(a); //[1, 2, 3, 4] 對象類型:賦值不僅是值的復制,而且也是引用的傳遞
*/

/*
    var a = [1, 2, 3];
    var b = a;
    b = [1, 2, 3, 4];
    alert(b); //[1, 2, 3, 4]
    alert(a); //[1, 2, 3] 只要賦值就會在內存中重新生成,所以a,b互補影響
*/

/*
    var a = 5;
    var b = 5;
    alert(a == b); //true 基本類型的比較:只要值相同就可以
*/

/*
    var a = [1, 2, 3];
    var b = [1, 2, 3];
    alert(a == b); //false 對象類型:值和引用都相同才行
*/

/*
    var a = [1, 2, 3];
    var b = a;
    alert(a == b); //true
*/
原型 —— prototype

概念
去改寫對象下面公用的方法或者屬性,讓公用的方法或者屬性在內存中僅存在一份(好處:提高性能)

學習原型

類比:原型就是CSS中的class(普通方法就是CSS中的style)

普通方法的優先級比原型要高

原型可以復用,普通方法不可以復用

var arr = []; 
arr.number = 10;
Array.prototype.number = 20;
alert(arr.number); //10 普通方法的優先級高于原型
//原型:prototype:要寫在構造函數下面
var arr = [1, 2, 3, 4, 5];
var arr2 = [2, 2, 2, 2, 2];
Array.prototype.sum = function(){
    var result = 0;
    for(var i=0; i

通過原型改寫工廠方式原則:

相同的屬性和方法可以加在原型上

混合的編程模式

function CreatePerson(name){
    this.name = name; //變化的,不能公用的屬性不能寫在原型上
}
CreatePerson.prototype.showName = function(){
    alert(this.name);
}   

var p1 = new CreatePerson("小明");
var p2 = new CreatePerson("小強");

alert(p1.showName == p2.showName); //true

混合的編程模式

//面向對象的寫法
function 構造函數(){
    this.屬性
}
構造函數.原型.方法 = function(){};

//面向對象的使用
var 對象1 = new 構造函數();
對象1.方法();

總結面向對象寫法:構造函數加屬性,原型加方法

面向對象的選項卡

原則
先寫出普通的寫法,然后改成面向對象寫法

普通方法變型

盡量不要出現函數嵌套函數

可以有全局變量

把onload中不是賦值的語句放到多帶帶的函數中

改成面向對象

全局變量就是屬性

函數就是方法

onload中創建對象

改this指向問題,要盡量讓面向對象中的this指向對象

1、先寫出普通方法




    
    面向對象的選項卡
    
    


    
11111
22222
33333

2、普通方法變型




    
    面向對象的選項卡
    
    


    
11111
22222
33333

關于this的指向

oDiv.onclick = function(){
    this: oDiv
};

---

oDiv.onclick = show;
function show(){
    this: oDiv
}

---

oDiv.onclick = function(){
    show();
};
function show(){
    this: window
}

改寫成面向對象




    
    面向對象bianxie
    
    


    
11111
22222
33333

面向對象的復用




    
    面向對象bianxie
    
    


    
11111
22222
33333
11111
22222
33333
面向對象的拖拽

注意

Event對象(event對象一定要寫到事件函數里面)

事件函數中用來阻止默認行為的return false也要寫到事件函數里面

!DOCTYPE html>


    
    面向對象編寫拖拽
    
    


    
本課練習

為數組對象添加求和,最大值

為字符串對象添加判斷是不是最后一個字母

面向對象的選項卡

給選項卡添加一個自動播放的方法

任意學過的效果改寫成面向對象

面向對象的面試題

高級面向對象 包裝對象

JS基于原型的程序
String Number Boolean




    
    
    
    



給基本類型添加方法



    
    
    
    



原型鏈

實例對象與原型之間的連接,叫做原型鏈

proto (隱式連接)

Object對象類型是原型鏈的最外層




    
    面向對象中的原型鏈
    
    



面向對象的一些屬性和方法 hasOwnProperty()看是不是對象自身下面的屬性



    
    面向對象中的原型鏈
    
    



constructor查看對象的構造函數

每個原型都會自動添加constructor屬性

for in 的時候,有些屬性是找不到的

避免修改constructor屬性




    
    面向對象中的原型鏈
    
    



for in循環,有些屬性找不到




    
    面向對象中的原型鏈
    
    



instanceof運算符

對象與構造函數在原型鏈上是否有關系
可以用來作類型判斷




    
    instanceof()
    
    



toString()

object上的方法




    
    toString()
    
    



對象的繼承 什么是繼承

在原有對象的基礎上,略作修改,得到一個新的對象

不影響原有對象的功能

如何添加繼承

屬性:call

方法:for in

例子:繼承的拖拽

!DOCTYPE html>


    
    繼承
    
    






    
    繼承
    
    






    
    繼承
    
    



繼承的拖拽



    
    
    
    
    


    
繼承的其他形式

1、類式繼承
利用構造函數(類)繼承的方式
2、原型繼承
借助原型來實現對象繼承對象
類式繼承




    
    
    
    



原型繼承




    
    原型繼承
    
    



拷貝繼承:通用型的 有new或無new的時候都可以

類式繼承:適合通過new構造函數形式

原型繼承:比較適合無new的對象

組件開發

1、對象的多種表現形式

提高對象的復用性

如何配置參數和默認參數

例子:拖拽

例子:彈窗

2、什么是組件?

對面向對象的深入應用(UI組件、功能組件)

將配置參數、方法、事件、三者進行分離

3、創建自定義事件

有利于多人協作開發代碼

如何去掛載自定義事件與事件函數

4、例子:基于JQ的選項卡的組件開發模式
trigger() extend()等方法的使用
5、本課練習
組件開發的練習
http://tangram.baidu.com/magic/

如何配置參數和默認參數



    
    組件開發中的參數問題
    


    

拖拽的組件開發



    
    
    
    
    


    
彈窗的組件開發



    
    彈窗的組件開發
    
    


    
    
    

    
    

理解自定義事件



    
    自定義事件
    


    

用原生js實現自定義事件



    
    自定義事件
    


    
div
span
配置、方法、自定義事件分離

——正規組件的寫法——基于拖拽的組件進行的修改




    
    自定義事件的拖拽組件
    
    
    


    
用JQ實現選項卡的組件開發



    
    基于JQ的選項卡組件開發
    
    
    


    
111111
222222
333333
111111
222222
333333
111111
222222
333333
111111
222222
333333

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79368.html

相關文章

  • JS面向對象之一 【概述】

    摘要:更形象的我們還可以將面向對象理解為一種宗教信仰。這就導致面向對象教的程序員們在寫時就很難受。所以為了滿足信仰面向對象教的需求通過構造函數的形式模擬了偽類。這個套路的核心就是類那么里沒有類所以其實是通過構造函數來模擬的偽類。 JS面向對象之一 【概述】 在學習JS的面向對象之前,我們應該先自問這樣幾個問題: 面向對象是什么意思? 學習面向對象的核心是什么? 為什么要學習面向對象?(它的...

    JohnLui 評論0 收藏0
  • 體驗javascript之美6:如果你覺得什么都會了或者不知道js學什么了看這里-面向對象編程

    摘要:面向過程函數式編程面向對象編程第二個并不是大家理解的那樣,我們先說舉個現實例子就明白了。多說一句函數是編程是非常強大也是我最喜歡的,以后再說,我們先說面向對象編程。 概述 當大家已經把js的語言基礎理解了,然后能夠寫出一些簡單的例子了,這個時候基本上達到了一年工作經驗的水平,而自己能夠獨立的寫一些小功能,完成一些小效果,或者臨摹修改一些比較復雜的插件的時候差不多就是兩年工作經驗的水平,...

    changfeng1050 評論0 收藏0
  • JS對象(1)重新認識面向對象

    摘要:對象重新認識面向對象面向對象從設計模式上看,對象是計算機抽象現實世界的一種方式。除了字面式聲明方式之外,允許通過構造器創建對象。每個構造器實際上是一個函數對象該函數對象含有一個屬性用于實現基于原型的繼承和共享屬性。 title: JS對象(1)重新認識面向對象 date: 2016-10-05 tags: JavaScript 0x00 面向對象 從設計模式上看,對象是...

    superw 評論0 收藏0
  • 面向對象的 JavaScript

    摘要:是完全的面向對象語言,它們通過類的形式組織函數和變量,使之不能脫離對象存在。而在基于原型的面向對象方式中,對象則是依靠構造器利用原型構造出來的。 JavaScript 函數式腳本語言特性以及其看似隨意的編寫風格,導致長期以來人們對這一門語言的誤解,即認為 JavaScript 不是一門面向對象的語言,或者只是部分具備一些面向對象的特征。本文將回歸面向對象本意,從對語言感悟的角度闡述為什...

    novo 評論0 收藏0
  • JS面向對象一:MVC的面向對象封裝

    摘要:自己的理解的第一個參數就是的值如果沒用默認是那個調用函數的當前的對象在全局作用域中就是被隱藏的所以不寫且在全局作用于調用函數的時候就是可以使用或者自己指定的指向 JS面向對象一:MVC的面向對象封裝 MDNjavascript面向對象 面向對象(Object-Oriented) showImg(https://segmentfault.com/img/remote/1460000016...

    Scliang 評論0 收藏0

發表評論

0條評論

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